我在 Ubuntu 14.04 上的 Tomcat 上部署了 Java Web 应用程序,并使用 Mongodb。但 Tomcat CPU 使用率在 5-6 小时后突然增加到 %100。我找不到原因。我的 htop 日志如下所示。
答案1
我在 Ubuntu 14.04 上使用 Tomcat 7 时遇到了同样的问题。我相信这是自上次 Tomcat 更新 USN-3177-2 以来发生的。
有人在 Debian 8 中遇到了类似的问题:https://serverfault.com/q/827359
我通过在 server.xml 中禁用端口 8080 解决了这个问题。
编辑:当有人访问时,CPU 使用率似乎开始升高http://domain.com:8080。这也会导致 catalina.out 中出现错误消息:
org.apache.coyote.http11.AbstractHttp11Processor process
INFO: Error parsing HTTP request header
在 server.xml 中注释掉端口为 8080 的连接器解决了我的问题。
答案2
我也遇到了同样的问题。这是我发给 @TheApacheTomcat 的一条推文,询问这是否是一个已知问题。https://twitter.com/jeromeleoterry/status/831865811962908672
他们回复了一个 Bug 60578 的链接https://bz.apache.org/bugzilla/show_bug.cgi?id=60578
当 Nessus 在端口 8080 和 8009 上扫描 Tomcat 服务器时,我看到了 CPU 峰值。我在 QA 环境中进行了测试,禁用了这些连接器,CPU 负载上升了几秒钟,然后又降了下来。
我在 EC2 中使用 Ubuntu 14.04,使用 Tomcat 7.0.52。
编辑:看起来这是一个已知问题,并且在较新版本的 Tomcat 中已得到解决。
https://bz.apache.org/bugzilla/show_bug.cgi?id=57544
解决方案是升级到 Tomcat 7.0.60 或更高版本。Ubuntu 16.04 附带 Tomcat 7.0.68,因此我建议尽可能升级操作系统。