使用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
有人能解释一下这些线程在做什么吗?他们处于这种状态正常吗?感谢
Client <--http--> Webserver <--ajp--> Tomcat
对于ajp,使用连接池。最大ajp线程的Tomcats默认值为因此可以处理200个同时请求。因此,在高负载期间,最多应该有200个ajp线程在等待一些工作(RUNNABLE)。
好的。如果服务器停止响应,这可能有几个根本原因。
- Web服务器不允许700个线程/连接
- 您的应用程序不知何故没有释放线程
如果服务器处于无响应状态,其他连接器(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