我有两个服务器(名为A1,A2)与mod_jk一起运行,还有两个Jboss服务器(名为J1,J2)。
Jboss版本是jboss 5.1。Apache版本为2.2.15。OS: RedHatEnterpriseLinuxServerVersion6.4(圣地亚哥) A1和A2 colud都将请求从外部重定向到J1,J2(都是端口8080)。A1、A2的设置相同(HostIP除外)。J1,J2也有相同的设置。( HostIP和jvmRoute除外)
我对这个建筑有一些问题。J1和J2可以很好地处理A1的请求(增强请求->,创建一个线程来处理->进程,完成->关闭线程)。
但是A2的要求很奇怪。当进程完成时,线程没有关闭。网络连接处于建立状态。我使用jstack来检查,下面有很多语句:
"ajp-XX.XX.72.12-8009-240" daemon prio=10 tid=0x00007f791418e800 nid=0x7793 runnable [0x00007f7875d5c000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1036)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1115)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:383)
at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:385)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451)
at java.lang.Thread.run(Thread.java:662)`将上述PID(nid=0x7793 )与ps -efT \ grep 30611进行比较,可以得到以下结果:‘`xxxx 17869 30611 17821 0 20:40 :00:00/usr/-efT/java/bin/java -program.name=run.sh .
虽然我使用netstat -A内,但是有很多这样的连接:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 npouiap2:8009 10.100.84.34:49666 ESTABLISHED
tcp 0 0 npouiap2:8009 10.100.84.34:50374 ESTABLISHED
tcp 0 0 npouiap2:8009 10.100.84.34:50507 ESTABLISHED 发布于 2014-10-28 01:21:51
问题可能是线程不是空闲的,因为默认情况下,AJP连接是持久的。
您可以尝试以下几种方法之一:
maxThreads on JBoss,使其与"max threads"相同(确切指令随MPM而变化)mod_jk's 禁用重用选项选项2是应用和验证问题是否持续存在的最简单方法。
https://stackoverflow.com/questions/26589064
复制相似问题