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