Tomcat 间歇性无响应

Tomcat 间歇性无响应

Tomcat 没有响应,并且间歇性地抛出 504。但是 CPU 使用率并不高。我们怀疑这可能是由于我们收到大量请求导致 tomcat 没有响应。我们在 server.xml 中将 maxThreads 设置为 400,我们得到的唯一线索是日志中的以下错误。

为地址为 null 且端口为 8090 的连接器创建的最大线程数 (400)

我们使用 AWS 并检查了 ELB,当时只有 299 个请求。因此,当我们在错误中看到最大线程数时,我们感到困惑,为什么 ELB 显示的线程数会比这个少呢?

答案1

这种行为通常是由于高堆内存使用率和/或过多的垃圾收集引起的。

当 Tomcat 内存紧张时,它会开始响应缓慢并间歇性超时。情况通常会慢慢恶化,直到它变得没有响应。

在这种情况下,您可能会看到或看不到高 CPU 使用率。尝试分析内存使用情况(JMX 可能对此有帮助)、GC 日志,看看是否是导致这种情况的原因。

如果是这种情况,则可能是某个地方存在内存泄漏。因此,请进一步分析,找到并修复它,或者每次遇到此状态时都重新启动 Tomcat。

相关内容