SocketInputStream.socketRead0挂起

时间:2018-06-04 13:01:01

标签: java linux sockets tomcat ajp

我有以下环境: Nginx(http) - > Apache2(AJP) - > Tomcat中。

有时候我在tomcat机器上看到netstat输出中的RecvQ已满(101 - ajp连接器中最大接受) 在这一刻,我从jvm得到了一个堆栈跟踪。我发现201个线程(ajp连接器中的最大线程数)如下所示:

Locked ownable synchronizers:
    - <0x00000001198fe520>, (a java/util/concurrent/ThreadPoolExecutor$Worker)

Thread 83765: (state = IN_NATIVE)
 - java.net.SocketInputStream.socketRead0(java.io.FileDescriptor, byte[], int, int, int) @bci=0 (Compiled frame; information may be imprecise)
 - java.net.SocketInputStream.socketRead(java.io.FileDescriptor, byte[], int, int, int) @bci=8, line=116 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int, int) @bci=117, line=171 (Compiled frame)
 - java.net.SocketInputStream.read(byte[], int, int) @bci=11, line=141 (Compiled frame)
 - org.apache.coyote.ajp.AjpProcessor.read(byte[], int, int) @bci=25, line=312 (Compiled frame)
 - org.apache.coyote.ajp.AjpProcessor.readMessage(org.apache.coyote.ajp.AjpMessage) @bci=14, line=367 (Compiled frame)
 - org.apache.coyote.ajp.AjpProcessor.process(org.apache.tomcat.util.net.SocketWrapper) @bci=115, line=118 (Compiled frame)
 - org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(org.apache.tomcat.util.net.SocketWrapper, org.apache.tomcat.util.net.SocketStatus) @bci=248, line=637 (Compiled frame)
 - org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run() @bci=106, line=316 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) @bci=95, line=1142 (Compiled frame)
 - java.util.concurrent.ThreadPoolExecutor$Worker.run() @bci=5, line=617 (Compiled frame)
 - org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run() @bci=4, line=61 (Compiled frame)
 - java.lang.Thread.run() @bci=11, line=748 (Compiled frame)

应用程序不会响应任何请求。问题出在哪儿? Linux内核?网络? Java的? Tomcat的?

0 个答案:

没有答案