在日志消息中的某个时刻启动jboss-portal-2.7.2:
2013-01-30 20:32:02,541 ERROR [org.apache.tomcat.util.net.JIoEndpoint] Socket accept failed
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309)
at java.lang.Thread.run(Thread.java:662)
在deploy文件夹中共有20个war模块。任何解决方案?
答案 0 :(得分:3)
为运行tomcat的用户增加服务器上的ulimit。
检查ulimit:
ulimit -n
为当前会话增加:
ulimit -n 102400
您可以通过修改/etc/security/limits.conf
。
答案 1 :(得分:2)
此消息基本上意味着您已达到操作系统设置的最大文件数限制。
解决这个问题的正确方法是诊断lsof -p <jboss_java_pid>
的输出,并找出导致这些文件被打开的原因。然后相应地进行解决。
快速修复解决方案可能是增加操作系统的全局最大文件限制或增加用户或两者的文件限制。例如,在Fedora中,可以在/proc/sys/file-max
文件中设置全局文件最大限制,并在/etc/security/limits.conf
设置用户限制。