gpt4 book ai didi

java - 监控java线程执行的工具

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:59 26 4
gpt4 key购买 nike

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

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

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

最佳答案

一个相对简单的方法来做到这一点(这可能适用于您的情况也可能不适用 - 取决于行为发生的时间):

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

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

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

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

关于java - 监控java线程执行的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com