最近我们的 JBoss AS 出现问题,我们无法确定根本原因。
我们的 jboss 服务器前面有一个 apache 负载平衡器,它使用端口 8009 上的 AJP 协议将请求传递给 jboss。
最近我们遇到了工作线程卡在系统中的问题(我们通过 jboss.web 上的 jmx-console 看到它,并且在发出线程转储时也看到它)。
我们目前为 AJP 连接设置了 700 个 maxThreads,最多需要 3 天才能完全达到最大值。此时我们重新启动jboss服务来解决它。
这些线程在线程转储中如下所示:
**Thread: ajp-0.0.0.0-8009-4 : priority:5, demon:true, threadId:90, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-5 : priority:5, demon:true, threadId:91, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-6 : priority:5, demon:true, threadId:92, threadState:RUNNABLE**
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(SocketInputStream.java:129)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:384)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:662)
**Thread: ajp-0.0.0.0-8009-7 : priority:5, demon:true, threadId:93, threadState:WAITING**
- waiting on <0x42ee5ce8> (a org.apache.tomcat.util.net.JIoEndpoint$Worker)
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
org.apache.tomcat.util.net.JIoEndpoint$Worker.await(JIoEndpoint.java:416)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:442)
java.lang.Thread.run(Thread.java:662)
ETC...
在 jboss 上运行的 Web 应用程序使用 Jersey 实现向客户端返回可用文件列表或使用 application/octet-stream 的文件本身(将 InputStream 作为实体添加到 Jersey 响应)。
提前致谢, 梅尼