加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

监视java线程执行的工具

发布时间:2020-12-14 23:54:58 所属栏目:Java 来源:网络整理
导读:我有一个在Tomcat服务器( Linux)上运行的java Web应用程序.在生产环境中,我遇到了一些性能问题.在随机的时间间隔运行tomcat的jsvc进程开始以90-100%的CPU运行.我无法找到此事件的触发器.服务器是四核系统.内存消耗并不表示任何异常. 如何监视应用程序中的哪
我有一个在Tomcat服务器( Linux)上运行的java Web应用程序.在生产环境中,我遇到了一些性能问题.在随机的时间间隔运行tomcat的jsvc进程开始以90-100%的CPU运行.我无法找到此事件的触发器.服务器是四核系统.内存消耗并不表示任何异常.

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

我正在检查jconsole和PSI Probe,但两者都没有提供有关应用程序内部线程导致CPU使用异常的任何详细信息.

解决方法

一种相对简单的方法(对您的情况可能有效或可能无效)取决于行为发生的时间长度:

当您的应用程序展示您要调试的行为(在这种情况下,CPU使用率为90-100%)时,请在进程ID上使用jstack:

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读