3
- Arthas 版本: 3.6.7
例: 我有一个Test类A()方法,按顺序掉用了其他类的B()方法和C()方法。 使用 trace Test A的方式监控。但是因为整个方法A()执行时间过长(超过1小时),导致命令台迟迟没有输出执行结果。 这样我就没办法分析,到底是慢在了B()方法或者C()方法(备注:B,C方法不方便直接监听观察)
这种情况下,有什么好办法,能分析出是B()一直没执行完,还是C()方法一直没执行完吗。谢谢。
例: 我有一个Test类A()方法,按顺序掉用了其他类的B()方法和C()方法。 使用 trace Test A的方式监控。但是因为整个方法A()执行时间过长(超过1小时),导致命令台迟迟没有输出执行结果。 这样我就没办法分析,到底是慢在了B()方法或者C()方法(备注:B,C方法不方便直接监听观察)
这种情况下,有什么好办法,能分析出是B()一直没执行完,还是C()方法一直没执行完吗。谢谢。
可以看看这个方案是否适合这个场景:一种检测线程阻塞的实现思路
实时分析的话jstack -l 进程id看看卡住的线程状态
jstack 查看线程状态就好了
在线改一下A的代码,加点sout信息来辅助调试。