Tomcat6 jk-8009服务使用100%CPU

时间:2015-03-18 11:22:04

标签: mysql jsf tomcat ajp

我有tomcat6的问题,当我" top -H"时,我可以看到3个java线程以100%CPU运行。 我查看了tomcat在使用PSI探针和"连接器"选项卡,在jk-8009下,我可以看到以下3行:

远程IP阶段Proc.time IN OUT URL
192.168.10.11服务20:02:17.105 522 B 0 B POST /configuration.jsf
192.168.10.11服务20:02:17.171 447 B 0 B POST /configuration.jsf
192.168.10.11服务20:02:17.167 447 B 0 B POST /configuration.jsf

根据top命令,100%的3个进程已运行1197分钟,这似乎对应于上面3行中显示的20:02分钟。所以我很确定这3项服务都是问题所在。

所述的/configuration.jsf是应用程序的主页面,因此可以是任何内容。

重启tomcat解决了这个问题,但我需要找出问题的原因。

我可以看到日志中没有崩溃。 我在互联网上环顾四周,在我看来它可能是数据库中的死锁。

该应用程序使用JSF,Prime Faces。 数据库是mysql

有人会就此事提出任何意见吗?

编辑:

在/etc/tomcat6/server.xml中,我有这个配置

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

1 个答案:

答案 0 :(得分:0)

使用阻塞Java连接器在Tomcat 8.0.21中为我解决了这个问题:

<Connector port="8009" protocol="org.apache.coyote.ajp.AjpProtocol" redirectPort="8443" />

现在,当没有使用时,CPU保持在0.3%左右。使用AjpNio2Protocol给出的结果与CPU相同,但在我的性能测试中AjpProtocol的速度要快一些。

https://tomcat.apache.org/tomcat-8.0-doc/config/ajp.html#Connector_Comparison