[alibaba/arthas]被watch的方法,因为执行耗时超长,导致arthas一直没有返回执行结果,无法分析慢在哪里

2024-07-17 665 views
2
  • Arthas 版本: 3.6.7

例: 我有一个Test类A()方法,按顺序掉用了其他类的B()方法和C()方法。 使用 trace Test A的方式监控。但是因为整个方法A()执行时间过长(超过1小时),导致命令台迟迟没有输出执行结果。 这样我就没办法分析,到底是慢在了B()方法或者C()方法(备注:B,C方法不方便直接监听观察)

这种情况下,有什么好办法,能分析出是B()一直没执行完,还是C()方法一直没执行完吗。谢谢。

回答

1

实时分析的话jstack -l 进程id看看卡住的线程状态

4

jstack 查看线程状态就好了

9

在线改一下A的代码,加点sout信息来辅助调试。