我有一个在三个 tomcat 服务器上运行的生产系统。突然,我的一个 tomcat 服务器显示 100% 的 CPU 使用率,这是我从池中取出的。
任何人都可以指导我如何开始调试这个问题?任何工具/实用程序?
谢谢, 哈里什
我要尝试的第一件事是获取线程转储并查看正在运行的内容。
从这篇文章:
生成 Java 线程转储 线程转储是通过向 JVM 进程发送 SIGQUIT 信号来生成的。有多种方法可以将此信号发送到进程。
在 Unix 中,使用“kill -3”,其中 pid 是 JVM 的进程 ID。
在 Windows 中,在运行 JVM 的窗口上按 CTRL+BREAK
这至少会向您显示应用程序中的哪些线程正在运行,并为您提供有关正在发生的事情的基本指示。jstack将提供另一种获取此信息的方法,并且对于与控制台断开连接的服务器进程可能更容易。
使用VisualVM报告线程/CPU + 内存使用情况可以获得更详细的报告。
看看JTop,它就像 unix top
,但用于 JVM 中的线程。