linux很多系统优化配置问题,一定是运维过生产环境系统才能体会到问题的坑,因为生产环境才会有各种各样的奇葩事情发生,比如如下的情况,ulimit -n文件数明明设置了,可是在线上环境就是提示打开文件数过多。
具体情况如下:
[root@mcuhome]# ulimit -n
102400
* soft nproc 102400
* hard nproc 102400
* soft nofile 102400
* hard nofile 102400
* soft stack 20480
* hard stack 20480
由/etc/rc.local启动的程序,链接数依然使用默认1024,网上有2种关于该问题的说法(a种说法更为可靠):
a/ /etc/security/limits.conf配置的生效只针对触发了tty ssh登录的用户(我们的服务是守护启动,没有tty ssh登录,所以未生效)
b/ /etc/security/limits.conf配置的生效晚于/etc/rc.local自启动(我们的所有程序服务由/etc/rc.local启动),相当于我们的程序服务启动时,网络连接数限制的配置还未生效,使用的是默认配置1024个连接。
通过/etc/profilet添加如下配置,可解决该问题。
ulimit -c unlimited
ulimit -n 102400