最近,网站服务器CPU经常就会飙升到100%,但内存,IO,网络等一切正常,今天忽然想起有可能是ulimit的问题,马上查看文件句柄数限制

ulimit -n

得到的结果是:5120,这个值对生产中的服务显得偏小。

网上给出的解决方案,大部分是直接输入

ulimit -SHn 102400 # 102400可自己根据应用调整

此法缺点很明显,一旦退出登陆立即失效。

下面给出正确的解决办法:

1.修改/etc/security/limits.conf子配置,命令如下

echo * - nofile 102400 >> /etc/security/limits.d/nofile.conf
echo root - nofile 102400 >> /etc/security/limits.d/nofile.conf

重新登录查看是否生效。若未生效,请继续深入~

2.编辑/etc/pam.d/su,取消如下行注释

session required pam_limits.so

重新登录查看是否生效。若未生效,请继续深入~

3.编辑/etc/profile,加入一行

ulimit -SHn 102400

重启服务器,再次登陆,查看句柄数,已经正确设置为102400。

如果有碰到类似情况,可以检查一下看看是不是文件句柄数设置太小引起的。

标签: ubuntu, ulimit

添加新评论