当我使用AJP协议时,JBOSS 6.0.0服务器崩溃 - 打开的文件过多

时间:2012-08-22 05:46:19

标签: jboss ajp

当我使用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]

2 个答案:

答案 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

来检查fd

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。