Tomcat服务器冻结并完全停止响应。重新启动似乎是将其重新联机的唯一方法。线程转储显示服务器在AJP线程上最大化。我为maxThread设置了默认值(200),当我的服务器挂起时,我在“RUNNABLE”和“locked on monitor”状态下看到了200个AJP线程。这个问题通常每3到4天发生一次。服务器没有大量装载,它每隔5分钟左右服务一次。这是一种ajp线程泄漏问题?Tomcat 7几天后冻结
服务器无法创建新的AJP线程,一旦达到数量AJP线程的最大限制,我可以理解这是预期的行为。但我很难理解的是
- 为什么服务器不断创建新的AJP线程来提供新的请求,当“RUNNABLE”ajp线程在池中可用时?
有没有人遇到过类似的问题?这是Tomcat中的一个已知问题/错误吗?感谢你的帮助! AJP-Thread的
线程转储片段:(我可以发布完整的线程转储如果有人想看看它...请让我知道)
"ajp-bio-6109-exec-307" daemon prio=10 tid=0x00007f846d3bc800 nid=0x51c9 runnable [0x00007f842e4e3000]
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:316)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:371)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:128)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
- locked <0x00000007b4f6f9a8> (a org.apache.tomcat.util.net.SocketWrapper)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
感谢