运行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
有人可以解释一下这些线程在做什么吗?他们处于这种状态是否正常? 感谢
答案 0 :(得分:1)
AJP用于您的网络服务器(apache http)和您的tomcat服务器之间的通信。 AJP比普通的http更节省资源。
Client <--http--> Webserver <--ajp--> Tomcat
使用ajp连接池。 Tomcats最大ajp线程的默认值是 200.因此可以处理200个同时请求。 因此,在高负载期间,应该有最多200个ajp线程等待一些工作(RUNNABLE)。
答案 1 :(得分:0)
确定。如果服务器停止响应,则可能有多个根本原因。
如果服务器处于无响应状态,其他连接器(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