Arthas是阿里巴巴开源的Java诊断工具,支持在线排查问题、性能分析、类热更新等,是生产环境必备的诊断利器。
本文系统介绍Arthas的核心功能和实战案例,帮助你快速定位和解决线上问题。
一、Arthas简介
1.1 核心能力
| 功能 | 说明 |
|---|---|
| 实时监控 | 方法执行耗时、调用次数 |
| 堆栈追踪 | 查看方法调用链路 |
| 反编译 | 动态查看class源码 |
| 类热更新 | 运行时修改class |
| 线程分析 | 死锁检测、线程状态 |
| 内存分析 | 堆转储、对象统计 |
| OGNL表达式 | 运行时执行任意代码 |
2026/8/19大约 6 分钟
Arthas是阿里巴巴开源的Java诊断工具,支持在线排查问题、性能分析、类热更新等,是生产环境必备的诊断利器。
本文系统介绍Arthas的核心功能和实战案例,帮助你快速定位和解决线上问题。
| 功能 | 说明 |
|---|---|
| 实时监控 | 方法执行耗时、调用次数 |
| 堆栈追踪 | 查看方法调用链路 |
| 反编译 | 动态查看class源码 |
| 类热更新 | 运行时修改class |
| 线程分析 | 死锁检测、线程状态 |
| 内存分析 | 堆转储、对象统计 |
| OGNL表达式 | 运行时执行任意代码 |
接口偶发慢但找不到原因?CPU 不高但响应延迟大?火焰图是性能分析的终极武器,一眼定位热点代码。
火焰图(Flame Graph):
将 CPU 采样数据可视化为"火焰"形状的 SVG 图
┌────────────────────────────────────────────────┐
│ main() │ ← 栈底(宽=CPU时间多)
│ ┌──────────┐ ┌────────────────┐ │
│ │ handle() │ │ process() │ │
│ │ ┌──────┐ │ │ ┌────────────┐ │ │
│ │ │ db() │ │ │ │ serialize()│ │ │ ← 栈顶(窄=CPU时间少)
│ │ └──────┘ │ │ └────────────┘ │ │
│ └──────────┘ └────────────────┘ │
└────────────────────────────────────────────────┘
横轴:CPU 占用时间比例(越宽越热)
纵轴:调用栈深度(从下到上)
颜色:随机(不影响分析)
看图口诀:
找最宽的"平台" → CPU 占用最多的方法 → 优化目标
找最深的"柱子" → 调用链最长的路径 → 可能有问题