当我使用AJP协议时,J BOSS 6.0.0服务器崩溃了。 系统持续显示以下异常。
2012-08-21 16:12:51,750 ERROR [org.apache.tomcat.util.net.JIoEndpoint] (ajp-0.0.0.0-8009-Acceptor-0) Socket accept failed: java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method) [:1.6.0_24]
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408) [:1.6.0_24]
at java.net.ServerSocket.implAccept(ServerSocket.java:462) [:1.6.0_24]
at java.net.ServerSocket.accept(ServerSocket.java:430) [:1.6.0_24]
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61) [:6.0.0.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:343) [:6.0.0.Final]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_24]
答案 0 :(得分:0)
cat /proc/sys/fs/file-max
检查系统中fd的最大数量,如果你有65535它应该没问题,但你可以将它增加到200000 通过输入'ulimit -n'
来检查ulimit,在我这边提供1024,所以我在文件/etc/security/limites.conf中增加它并添加:
* soft nofile 2048
* hard nofile 2048
最后,您可以通过输入lsof -p xxx|wc -l
all those explanation come from this which saves my life每次我遇到这个问题。
答案 1 :(得分:0)
问题是因为最大线程& connectionTimeout在JBOSS服务器的Server.xml中设置。
AJP协议的connectionTimeout默认值为无限。
所以,connectionTimeout值设置为120000(2分钟)。
因此,问题(太多打开的文件)从未复制过。最好设置最佳配置设置而不是默认值。
为了解决此问题,我们进行了一些其他配置更改。那些是,
ajp协议的“max threads”值从1500更改为150。
“ulimit -n”值已从1024更改为8192。