--linux资源限制配置文件是/etc/security/limits.conf;限制用户进程的数量对于linux系统的稳定性非常重要。 limits.conf文件限制着用户可以使用的最大文件数,最大线程,最大内存等资源使用量。
建议配置:
* soft nofile 655350 #任何用户可以打开最大文件描述符数量,默认1024,这里的数值会限制tcp连接 * hard nofile 655350 * soft nproc 655350 #任何用户可以打开的最大进程数 * hard nproc 650000 @student hard nofile 65535 @student soft nofile 4096 @student hard nproc 50 #学生组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告 @student soft nproc 30
hard和soft两个值都代表什么意思呢?
$ ps h -Led -o user | sort | uniq -c | sort -n 2 shtermuser 11 zabbix 206 elasticsearch 490 root
$ cat /proc/sys/fs/file-max 6553600
ulimit -n 默认查看的是soft limit
$ ulimit -n 170000
查看hard limit
$ ulimit -Hn 170000
#通过ulimit -Sn设置最大打开文件描述符数的soft limit,注意soft limit必须小于hard limit $ ulimit -Sn 160000 <!-- more --> #同时设置soft limit和hard limit。对于非root用户只能设置比原来小的hard limit。 $ ulimit -n 180000
#root权限下,在/etc/security/limits.conf中添加如下两行,表示所有用户最大打开文件描述符数的soft limit为102400,hard limit为104800。重启生效 * soft nofile 102400 * hard nofile 104800
注意:设置nofile的hard limit还有一点要注意的就是hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后将无法正常登录。
$ cat /proc/sys/fs/file-nr 5664 0 186405
其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于file-max。
解答:使用ulimt -n命令进行测试,如果小于系统允许的最大值,设置成功,大于最大值,系统会报错提示。
$ ulimit -n 1100000 -bash: ulimit: open files: cannot modify limit: Operation not permitted $ ulimit -n 1048576 $ ulimit -n 1048577 -bash: ulimit: open files: cannot modify limit: Operation not permitted $ ulimit -n 1048575 $ ulimit -n 1048576
ulimit -a 显示当前所有的资源限制 ulimit -H 设置硬件资源限制 ulimit -S 设置软件资源限制 ulimit -n 设置进程最大打开文件描述符数 ulimit -u <程序数目> 用户最多可开启的程序数目
总结:
本文作者:lihongzhen
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!