linux 资源限制配置文件是 /etc/security/limits.conf
;限制用户进程的数量对于 linux 系统的稳定性非常重要。 limits.conf
文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。
1 | * soft nofile 655350 #任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接 |
hard
和 soft
两个值都代表什么意思呢? soft
是一个警告值,而 hard
则是一个真正意义的阀值,超过就会报错。
所有用户创建的进程数
1 | ps h -Led -o user | sort | uniq -c | sort -n |
系统最大打开文件描述符数
查看
1 | cat /proc/sys/fs/file-max |
设置
1 | vim /etc/sysctl.conf |
进程最大打开文件描述符数
查看 ulimit -n
默认查看的是 soft limit
。
1 | ulimit -n |
临时设置
1 | 通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit |
永久设置
1 | root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。重启生效 |
注意:设置 nofile
的 hard limit
还有一点要注意的就是 hard limit
不能大于 /proc/sys/fs/nr_open
,假如 hard limit
大于 nr_open
,注销后将无法正常登录。
查看当前系统使用的打开文件描述符数
1 | cat /proc/sys/fs/file-nr |
其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于 file-max
。
如何配置nofile
知道了 /etc/security/limits.conf
中的参数含义之后,那么如何配置 nofile
,确定 nofile
的最大值呢。
解答:使用 ulimt -n
命令进行测试,如果小于系统允许的最大值,设置成功,大于最大值,系统会报错提示。
1 | ulimit -n 1100000 |
ulimit -a/n/H/S 都有什么含义
ulimit -a
显示当前所有的资源限制ulimit -H
设置硬件资源限制ulimit -S
设置软件资源限制ulimit -n
设置进程最大打开文件描述符数ulimit -u
<程序数目> 用户最多可开启的程序数目
总结
- a. 所有进程打开的文件描述符数不能超过
/proc/sys/fs/file-max
- b. 单个进程打开的文件描述符数不能超过
user limit
中nofile
的soft limit
- c.
nofile
的soft limit
不能超过其hard limit
- d.
nofile
的hard limit
不能超过/proc/sys/fs/nr_open
欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !