Tomcat停止工作:没有可用的ajp



使用Liferay 6.1.20-ee-ga2运行的My Tomcat 7.0.27在高负载时停止工作。运行jstack给了我很多这样的线程,它们似乎什么都不做,并阻塞了ajp资源。cpu负载不高(低于55%)。

"ajp-bio-8009-exec-8930"后台进程prio=10 tid=0x00007f8a5c12f800 nid=0xcc26可运行[0x000000000000000]java.lang.Thread.State:可运行

   Locked ownable synchronizers:
        - None
"ajp-bio-8009-exec-8929" daemon prio=10 tid=0x00007f8a5c12e800 nid=0xcc25 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   Locked ownable synchronizers:
        - None
"ajp-bio-8009-exec-8928" daemon prio=10 tid=0x00007f8a5c0eb800 nid=0xcc20 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   Locked ownable synchronizers:
        - None
"ajp-bio-8009-exec-8927" daemon prio=10 tid=0x00007f8a5c042800 nid=0xcc1f runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   Locked ownable synchronizers:
        - None

有人能解释一下这些线程在做什么吗?他们处于这种状态正常吗?感谢

AJP用于Web服务器(apachehttp)和tomcat服务器之间的通信。AJP比普通http更节省资源。

Client <--http--> Webserver <--ajp--> Tomcat

对于ajp,使用连接池。最大ajp线程的Tomcats默认值为因此可以处理200个同时请求。因此,在高负载期间,最多应该有200个ajp线程在等待一些工作(RUNNABLE)。

好的。如果服务器停止响应,这可能有几个根本原因。

  1. Web服务器不允许700个线程/连接
  2. 您的应用程序不知何故没有释放线程

如果服务器处于无响应状态,其他连接器(http等)是否仍然工作,或者整个系统是否无响应?

增加maxThread值是否会扩展响应性(或反向)?

问候Marcel

线程似乎因为内存不足而卡在0x0000000000000000中。没有剩余空间,因此分配在0x0000000000000000中停止

"ajp-bio-8009-exec-8929" daemon prio=10 tid=0x00007f8a5c12e800 nid=0xcc25 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE
   Locked ownable synchronizers:
        - None

最新更新