0

J BOSS 6.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]
4

2 回答 2

0
  • 检查系统中 fd 的最大数量,cat /proc/sys/fs/file-max如果你有 65535 应该没问题,但你可以将它增加到 200000
  • 通过输入来检查ulimit 'ulimit -n',在我这边给出1024,所以我在文件/etc/security/limites.conf中增加它并添加:

    * soft nofile 2048

    * hard nofile 2048

最后你可以检查 fd 字节输入lsof -p xxx|wc -l

所有这些解释都来自这个, 每次我遇到这个问题时都会挽救我的生命。

于 2012-08-24T22:59:17.763 回答
0

问题是因为在 JBOSS 服务器的 Server.xml 中设置了最大线程数和 connectionTimeout。

AJP 协议的 connectionTimeout 默认值为无限。

因此,connectionTimeout 值设置为 120000(2 分钟)。

因此,问题(打开的文件太多)从未复制。设置最佳配置设置而不是默认值总是更好。

为了解决这个问题,已经进行了一些其他配置更改。那些是,

ajp 协议的“最大线程”值从 1500 更改为 150。

“ulimit -n”值已从 1024 更改为 8192。

于 2012-09-27T06:39:37.227 回答