最近服务器的一个项目偶尔就显示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。如果有碰到类似情况，可以检查一下看看是不是文件句柄数设置太小引起的。