Tomcat 服务器卡住并完全停止响应。重启似乎是让它重新联机的唯一方法。线程转储显示服务器在 AJP 线程上达到极限。我为 maxThread 设置了默认值 (200),当我的服务器挂起时,我看到恰好有 200 个 AJP 线程处于“RUNNABLE”和“locked on monitor”状态。此问题通常每 3 到 4 天发生一次。服务器负载不重,它每 5 分钟左右处理一个请求。这是某种 ajp 线程泄漏问题吗?
一旦达到 AJP 线程数的最大限制,服务器就无法创建新的 AJP 线程,我可以理解这是预期的行为。但我很难理解的是
- 当“RUNNABLE”ajp 线程在池中可用时,为什么服务器不断创建新的 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)
谢谢
最佳答案
我好像还不能发表评论...
在您的 server.xml 文件中是否设置了 connectionTimeout 值?
<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL HTTP/1.1 Connector on port 8080
-->
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="660" connectionTimeout="20000"
redirectPort="8443" URIEncoding="WINDOWS-1256" />
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" connectionTimeout="20000" URIEncoding="WINDOWS-1256" />
希望对你有帮助 问候,
关于multithreading - 几天后Tomcat 7卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965486/