【问题标题】:many Tomcat Threads sleeping - org.apache.catalina.connector.CoyoteAdapter.postParseRequest许多 Tomcat 线程正在休眠 - org.apache.catalina.connector.CoyoteAdapter.postParseRequest
【发布时间】:2017-07-06 11:34:13
【问题描述】:

当我的 tomcat 服务器启动并工作时,它无法处理来自某个特定应用程序的请求 - 浏览器只会继续旋转(只是在简单的登录页面本身)。没有错误。从多个线程转储中,我只看到一个可疑的。有 100 个线程在休眠,所有的堆栈跟踪都相同。

为什么所有这些线程都在 CoyoteAdapter.postParseRequest 休眠?

http-nio-8080-exec-159 - priority:6 - threadId:0x000000000f5f5000 - nativeId:0x658 - state:TIMED_WAITING
stackTrace:
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:754)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
- locked <0x00000007dcc67fe8> (a org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

【问题讨论】:

标签: java tomcat thread-dump


【解决方案1】:

查看the tomcat source code,如果上下文暂停,postParseRequest 将休眠,the context gets paused while it is being reloaded

查看您的线程转储以查看哪个线程正在重新加载上下文,应该可以进一步了解该问题。

【讨论】:

  • 感谢 Magnus 指出。我无法在 Thread Dump 中找到应用程序重新加载的证据,但是我继续挖掘日志。重新加载应用程序时出现 OOM。以下是日志。
  • INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.StandardContext.reload 名称为 [/myrepoapp] 的重新加载上下文已启动 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org .apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run 后台线程意外死亡 ContainerBackgroundProcessor[StandardEngine[Catalina]] java.lang.OutOfMemoryError
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
相关资源
最近更新 更多