首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于监视java线程执行的工具

用于监视java线程执行的工具
EN

Stack Overflow用户
提问于 2011-01-14 11:38:42
回答 6查看 29.7K关注 0票数 6

我有一个运行在Tomcat服务器(Linux)上的java web应用程序。在生产环境中,我面临着一些性能问题。在随机时间间隔,运行tomcat的jsvc进程开始在90-100%的CPU上运行。我找不到这个事件的触发因素。服务器是一个四核系统。内存消耗不表示有任何异常。

如何监控应用程序中的哪个线程(应用程序堆栈跟踪)导致了问题?

我正在检查jconsolePSI Probe,但这两个都没有给出应用程序内部的哪个线程导致CPU使用率异常的任何详细信息。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-01-14 11:55:40

一种相对简单的方法(可能适用于您的情况,也可能不适用于您的情况--取决于行为发生的时间):

当你的应用程序表现出你想要调试的行为时(在本例中,CPU使用率为90-100% ),在进程ID上使用jstack:

http://download.oracle.com/javase/6/docs/technotes/tools/share/jstack.html

检查哪些线程正在运行,以及它们以什么方法发生。如果您这样做几次,可能会相对容易地发现罪魁祸首调用链。然后,您可以只调试该链的入口。

这不一定是最好或最优雅的方法,但它很容易做到,而且可能就是您所需要的。我会从那里开始。这类似于"printf是我用过的最好的调试器“的哲学。

票数 6
EN

Stack Overflow用户

发布于 2011-01-14 17:30:13

VisualVM就是你要找的东西。它附带了较新的JDK,并允许您监视thread usage

票数 4
EN

Stack Overflow用户

发布于 2013-03-26 22:53:44

另一个显示消耗cpu最多的线程的工具是jvmtop

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4687757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档