这里推荐使用 arthas 工具来排查, 非常好用
附上之前的文章
https://blog.csdn.net/u012745499/article/details/122971698
这里, 再介绍下 trace 命令
查看方法耗时分布
例如我想监控 JobService
这个类的 splitJob
方法 一次. 如果该方法被调用一次, 那么就会打印该方法的耗时分布
# 注意在生产环境下, 需要指定 -n 表示监控一次
# 否则在高并发情况下方法调用很频繁, 打印会很多, 也会影响接口性能
trace *JobService splitJob -n 1
可以看到 JobServiceImpl.createNewJob 方法耗时 628ms, 我们可以继续跟进, 直到找到真正耗时的方法
trace *JobServiceImpl createNewJob -n 1
注意: trace 每次只能跟踪一级方法的调用链路, 我们需要多次 trace 子方法才能判断到底是哪个根方法耗时