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

时间:2014-09-22 18:07:23

标签: multithreading tomcat liferay ajp

运行Liferay 6.1.20-ee-ga2的我的Tomcat 7.0.27在高负载期间停止工作。 运行jstack给了我很多这个似乎什么都不做并阻止ajp资源的线程。 cpu没有高负载(低于55%)。

“ajp-bio-8009-exec-8930”守护程序prio = 10 tid = 0x00007f8a5c12f800 nid = 0xcc26 runnable [0x0000000000000000]        java.lang.Thread.State:RUNNABLE

   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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

确定。如果服务器停止响应,则可能有多个根本原因。

  1. Web服务器不允许700个线程/连接。
  2. 你的应用程序以某种方式不释放线程。
  3. 如果服务器处于无响应状态,其他连接器(http等)是否仍然有效或整个系统是否无响应?

    增加maxThread值是否会延长响应时间(或反向)?

    此致 烫发

答案 2 :(得分:0)

由于内存不足,似乎线程卡在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