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

6vl6ewon  于 2022-11-08  发布在  其他
关注(0)|答案(3)|浏览(156)

JBOSS6.0.0服务器在使用AJP协议时崩溃,系统连续出现以下异常。

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]
pxy2qtax

pxy2qtax1#

  • 输入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每次我面对这个问题。

dxxyhpgq

dxxyhpgq2#

问题是由于在JBOSS服务器的Server.xml中设置了最大线程数和connectionTimeout。
AJP通信协定的connectionTimeout预设值是无限大。
因此,connectionTimeout值设置为120000(2分钟)。
因此,问题(太多打开的文件)从未复制。设置最佳配置设置总是比默认值更好。
为解决此问题,还进行了一些其他配置更改这些更改包括:
ajp协议的“最大线程数”值已从1500更改为150。
“ulimit -n”值已从1024更改为8192。

aor9mmx1

aor9mmx13#

AJP的问题是它的connectionTimeout默认值是无限的。要解决这个问题,我建议你切换到http甚至更好的https。

相关问题