外观
一句话答案
Arthas 是阿里开源的 Java 在线诊断工具,核心命令:dashboard(面板)/ thread(线程)/ trace(耗时)/ jad(反编译)。
核心要点
核心命令:
| 命令 | 用途 |
|---|---|
dashboard | 实时查看系统面板(线程/内存/GC) |
thread | 查看线程状态,thread -n 3 看最忙的3个 |
jad | 反编译类,确认线上代码版本 |
watch | 观察方法入参/返回/异常 |
trace | 追踪方法调用耗时,定位慢调用 |
heapdump | 生成堆 dump 文件 |
sc/sm | 搜索类/方法 |
典型使用场景:
- CPU 飙高:
thread -n 5→ 找到占 CPU 最高的线程 →thread <id>看堆栈 - 方法耗时:
trace com.xxx.Service method→ 逐层下钻找慢点 - 代码确认:
jad com.xxx.Class→ 确认部署的是哪个版本 - 动态修改:
redefine /tmp/Fix.class→ 热修复(慎用)
追问与易错
追问方向:
- 线上 CPU 100% 怎么用 Arthas 排查?
- 怎么确认线上代码版本对不对?
- Arthas 和 jstack 比有什么优势?
易错点:
- ❌ Arthas 只能排查性能问题——还能热修复和动态日志
- ❌ 生产环境随意使用 redefine
💡 记忆锚点
Arthas是线上的"听诊器":dashboard看全局体征,thread抓CPU元凶,trace逐层定位慢调用,jad反编译确认代码版本,watch窥探方法出入参。CPU飙高三板斧:thread -n 5找线程、看堆栈、定位代码。