Arthas Trace 命令实战:定位 Java 方法调用链路与耗时瓶颈
在生产环境中,我们经常遇到接口响应慢、方法执行耗时长的问题。单纯依靠日志往往难以精确定位到具体的代码行,尤其是当日志打印位置不合理或异步处理逻辑复杂时。这时候,阿里的开源诊断工具 Arthas 就派上用场了。
Arthas 支持无侵入地附着到运行中的 JVM 进程,通过 trace 命令可以直观地展示方法调用的链路树,自动标红耗时最长的节点,帮助我们快速锁定性能瓶颈。
环境准备
本次演示基于以下环境:
- SpringBoot 3.3.5
- Open JDK 17
- Arthas 4.1.3
场景一:Kafka 消费客户端追踪
假设存在一个业务涉及多个节点串行异步处理,我们需要追踪某个关键方法的执行细节。
启动与选择进程
首先启动 Arthas 并选择目标 Java 进程 ID:
java -jar arthas-boot.jar
在列表中选择对应的应用进程(例如 JDK 17 环境下的进程)。

执行链路追踪
使用 trace 命令监控特定方法的调用情况。这里我们限制追踪次数为 5 次,并跳过 JDK 内部方法,以便更清晰地看到业务逻辑:
trace com.example.crm.channel.dataSyn.service.impl.MssCloudInfoSyncServiceImpl pullDataFinish -n 5 --skipJDKMethod false
参数说明:
-n:指定限制追踪的次数,避免刷屏。--skipJDKMethod:是否忽略 JDK 内部方法调用,设为false可查看详细调用栈。
执行后,你会看到类似以下的输出,其中红色高亮部分即为耗时最长的调用路径。

分析完成后,记得停止追踪:
stop com.example.crm.channel.dataSyn.service.impl.MssCloudInfoSyncServiceImpl pullDataFinish
场景二:SAAS 健康度定时任务深度分析
对于复杂的定时任务,如 SAAS 健康度检查,调用链路可能更深,涉及数据库查询、分布式锁等组件。
接入 Arthas
通过 as.sh 脚本启动 Arthas 并连接到目标服务(例如 smet-rpc-service):
./as.sh
选择对应的 PID 后,进入 Arthas 控制台。
追踪核心 Job
针对耗时较长的定时任务方法 进行追踪:



