我们在 CentOS 6 上运行 Apache Tomcat 7.0.41,java 版本为“1.7.0_21”。我们收到很多打开文件过多的错误,所以我做了一些研究。大家一致认为这与打开文件的数量有关。所以我做了以下事情:
增加了 /etc/security/limits.conf 中的最大文件数
soft nofile 100000 hard nofile 100000
重启服务器
检查限制对于运行该进程的用户是否有效
[app_admin@xxx ~]$ ulimit -Hn 100000 [app_admin@xxx ~]$ ulimit -Sn 100000
lsof
使用命令监视服务器上的打开文件
我观察到的是,当打开的文件总数达到大约 13000 个并且 tomcat 打开的文件数量约为 4500 个时,错误再次出现。
我很困惑。我以为这样就可以解决问题,但显然我不完全了解根本原因以及如何正确设置参数。
为了(可能)有帮助,我没有修改 Tomcat 的 server.xml 文件(尽管我很想这么做)。我不想开始摆弄它,让事情变得更糟。
如果有人能给我一些提示,告诉我从哪里开始寻找,我非常乐意分享更多信息。
答案1
我在 Tomcat 6 和 Java 6 中遇到了类似的问题,但我的 /etc/security/limits.conf 看起来像
tomcat soft nproc 2047
tomcat hard nproc 16384
tomcat soft nofile 1024
tomcat hard nofile 65536
tomcat 服务以什么tomcat
用户身份运行。