最近服务器的一个项目偶尔就显示Too many open files尝试解决无果,又不能一遇到这种情况就重启项目,遂百度尝试解决,结果百度的思路是对的,但是不全面不能完整的解决问题,苦恼良久。今遇到群内大佬解惑,成功完美修改ulimit,得到大佬口头授权,搬运大佬文章做一下记录,方便后续使用。
版权属于: 若海
本文链接: https://www.rehiy.com/post/41
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
最近,网站服务器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。
如果有碰到类似情况,可以检查一下看看是不是文件句柄数设置太小引起的。
评论 (0)