linux ulimit调优

本文介绍如何使用ulimit命令来调整Linux系统中用户的进程限制、文件打开数量等关键参数,并探讨了如何永久设置这些参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ulimit -a 用来显示当前的各种用户进程限制。
    Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
    设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
     ulimit -u 10000
     对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
     最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
     ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
     其他建议设置成无限制(unlimited)的一些重要设置是:
     数据段长度:ulimit -d unlimited
     最大内存大小:ulimit -m unlimited
     堆栈大小:ulimit -s unlimited
     CPU 时间:ulimit -t unlimited
     虚拟内存:ulimit -v unlimited

我们公司服务器需要调整ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。

PS:如果你碰到类似的错误提示
ulimit: max user processes: cannot modify limit: 不允许的操作
ulimit: open files: cannot modify limit: 不允许的操作

为啥root用户是可以的?普通用户又会遇到这样的问题?
看一下/etc/security/limits.conf大概就会明白。
linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。
超出上限的修改就会出“不允许的操作”这样的错误。

在limits.conf加上
*        soft    noproc  10240
*        hard    noproc  10240
*        soft    nofile  10240
*        hard    nofile  10240
就是限制了任意用户的最大线程数和文件数为10240。
### 调整优化Linux系统的Limits配置 #### 配置文件位置与作用域 limits设置主要通过`/etc/security/limits.conf`以及位于`/etc/security/limits.d/`目录下的文件来实现[^1]。这些配置项用于控制单个进程能够使用的资源量,比如最大打开文件数、CPU时间等。 对于临时修改当前会话中的限制,可以直接编辑shell环境变量;而对于永久性的更改,则需按照如下方法操作: - **用户级限制**:在`/etc/security/limits.conf`中定义特定用户的资源限额。 ```bash username soft nofile 1024 username hard nofile 4096 ``` - **全局默认限制**:同样是在上述文件里指定*号代表所有用户的一般性约束条件 ```bash * soft nproc 2048 * hard nproc 4096 ``` 这里的soft表示软限制,默认生效但可由程序自行提升至hard规定的硬上限范围内。 #### 应用场景实例 当运行高并发服务如Web服务器时,适当增加允许的最大连接数量是非常必要的。这通常涉及到增大每秒新建TCP连接速率(`max_syn_backlog`)及开放端口范围(`ip_local_port_range`)的同时也要放宽每个线程能处理的socket数目即上面提到过的nofile参数值。 另外,在数据库密集型应用环境中,为了防止因内存不足而触发OOM killer机制杀死重要进程,应该合理规划swap空间大小并设定合理的memlock阈值给MySQL/MariaDB这类持久化存储引擎使用。 #### 生效方式说明 需要注意的是,仅修改`.conf`文件并不足以立即改变现有登录session的行为模式。要使新的limits规则即时起效,除了重启计算机外还可以采取注销再重新登陆的方式刷新权限表。此外,某些守护进程中可能还需要额外发送信号通知它们重读配置数据才能看到效果变化。 ```bash ulimit -n # 查看当前shell session下nofile的实际取值 ``` 此命令可用于验证调整后的配置是否已经成功应用于目标账户之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值