Tomcat6 jk-8009服务使用100%CPU

Tomcat6 jk-8009 service using 100% CPU

我遇到 tomcat6 的问题,当我 "top -H" 时,我可以看到 3 java 个线程 运行 处于 100% CPU。 我查看了 tomcat 使用 PSI-probe 做了什么,在 "Connectors" 选项卡中,在 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" />

使用阻塞 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