真正在流程层面解决 "Too many open files" 而不是全局 ubuntu 层面
Really solve "Too many open files" at a process level not on global ubuntu level
我们有 tomcat 运行 并且我们间歇性地遇到 "Too many open files" 问题。我们确实做了很多 google 并检查了所有的 Whosebug 并做了一切以修复它就像修改“/etc/security/limits.conf”等..
现在 ulimit -n
显示了更高的数字,但我们仍然面临问题。
终于在我们尝试时 $ cat /proc/<processId>/limits
;我们注意到 "Number of open Files" 仍然显示为 4096,这是旧值;尽管对于 root 它显示了更高的值。
最后,我们可以通过修改 /etc/default/tomcat7 [或与您的流程相关的任何其他文件] 并添加以下行来解决问题:
ulimit -Hn 10000
ulimit -Sn 10000
无需重启系统;只需重新启动该过程,然后检查 /proc/processId/limits
在ubuntu 16.04下tomcat的最大文件数受systemd限制并自动设置为4096。您可以通过运行
更改此值
systemctl edit tomcat7
添加以下行:
[Service]
LimitNOFILE=8192
或者您可以自己创建配置:
mkdir /etc/systemd/system/tomcat7.service.d/
nano /etc/systemd/system/tomcat7.service.d/override.conf
重新加载后 tomcat:
服务tomcat7重启
并仔细检查限制设置是否正确
ps ax | grep tomcat
cat /proc/<processId>/limits
我们有 tomcat 运行 并且我们间歇性地遇到 "Too many open files" 问题。我们确实做了很多 google 并检查了所有的 Whosebug 并做了一切以修复它就像修改“/etc/security/limits.conf”等..
现在 ulimit -n
显示了更高的数字,但我们仍然面临问题。
终于在我们尝试时 $ cat /proc/<processId>/limits
;我们注意到 "Number of open Files" 仍然显示为 4096,这是旧值;尽管对于 root 它显示了更高的值。
最后,我们可以通过修改 /etc/default/tomcat7 [或与您的流程相关的任何其他文件] 并添加以下行来解决问题:
ulimit -Hn 10000
ulimit -Sn 10000
无需重启系统;只需重新启动该过程,然后检查 /proc/processId/limits
在ubuntu 16.04下tomcat的最大文件数受systemd限制并自动设置为4096。您可以通过运行
更改此值systemctl edit tomcat7
添加以下行:
[Service]
LimitNOFILE=8192
或者您可以自己创建配置:
mkdir /etc/systemd/system/tomcat7.service.d/
nano /etc/systemd/system/tomcat7.service.d/override.conf
重新加载后 tomcat:
服务tomcat7重启
并仔细检查限制设置是否正确
ps ax | grep tomcat
cat /proc/<processId>/limits