本文目录导读:

- 快速入门:启动与基础命令
- 定位 CPU 高、线程阻塞等性能问题
- 排查接口响应慢、方法耗时瓶颈
- 线上问题热修复与动态修改
- 查看线上运行中的配置、参数、内存对象
- 排查异常/错误场景
- 分析IO、网络、锁等问题
- 🔥 核心用法速记口诀(实际工作引用)
- ⚠️ 注意事项
Arthas(阿尔萨斯)是阿里巴巴开源的Java诊断工具,主要用于线上问题的实时排查,无需修改代码或重启应用,以下是它在线上问题排查时的典型用法和场景:
快速入门:启动与基础命令
- 启动:在目标JVM所在机器上执行
java -jar arthas-boot.jar,选择需要诊断的Java进程。 - 常用基础命令:
dashboard:实时查看线程、内存、GC、系统信息(类似JVM监控面板)。thread:查看线程栈,定位死锁、CPU过高线程(thread -b直接显示阻塞线程)。jvm:查看JVM各项参数、类加载、编译、内存等详细状态。
定位 CPU 高、线程阻塞等性能问题
- 场景:CPU飙高、系统卡慢、接口无响应。
- 典型用法:
thread:列出所有线程及其CPU占比,thread -n 5显示最忙的5个线程。thread <id>:查看具体线程的堆栈,识别热点代码。thread -b:直接定位当前阻塞其他线程的线程(死锁检测利器)。dashboard:观察内存、GC频率、线程数变化,判断是内存泄漏还是CPU密集型任务。
排查接口响应慢、方法耗时瓶颈
- 场景:某个API接口偶尔超时,或整体请求变慢。
- 典型用法:
trace <类名> <方法名>:统计方法内部所有子调用的耗时、次数和调用链路。- 示例:
trace com.example.service.UserService getUserInfo可以精确看到SQL查询、RPC调用哪个环节最慢。
- 示例:
watch <类> <方法> "{params,returnObj,throwExp}" -x 2:观测方法入参、返回值、异常,并展开深度2层。- 示例排查返回数据异常:
watch com.example.controller.OrderController getOrder "{params,returnObj}" -x 3
- 示例排查返回数据异常:
monitor/tt:monitor统计方法调用频率、成功/失败次数;tt(TimeTunnel)记录快照,可回放方法调用现场。
线上问题热修复与动态修改
- 场景:紧急修复线上Bug,但无法立即发布版本(需谨慎,通常用于临时止血)。
- 典型用法:
ognl:执行任意Java表达式,动态修改静态变量、调用方法。- 示例:
ognl '@com.example.config.GlobalConfig@TIME_OUT=5000'动态改超时时间。
- 示例:
mc+redefine:使用mc将修改后的Java文件编译为class,再用redefine热替换线上类(注意:仅覆盖方法体,不支持新增字段/方法,有风险)。vmtool:直接调用Spring Bean或任意对象的方法(如强制刷新缓存),比ognl更安全易用。
查看线上运行中的配置、参数、内存对象
- 场景:验证配置是否正确、查看某个变量当前值、确认缓存内容。
- 典型用法:
sc:搜索已加载的类,sc -d *Controller查看类详细信息(来源、注解、字段)。sm:查看类的方法签名(方法名、参数、返回值)。heapdump:生成堆转储文件(heapdump /tmp/dump.hprof),配合MAT分析大对象。vmtool --action getInstances:获取某个类的所有实例,查看其字段值(例如查看某个缓存Map的内容)。
排查异常/错误场景
- 场景:偶发报错、业务逻辑异常、日志不完整。
- 典型用法:
watch配合-e参数:watch com.example.service.* * "{throwExp}" -e -x 2只捕获并打印异常。stack <类名> <方法名>:打印当前方法被调用的完整调用栈,便于溯源异常路径。monitor -c 5 <类> <方法>:每5秒统计一次方法调用,快速定位高错误率方法。
分析IO、网络、锁等问题
- 场景:文件句柄泄漏、网络等待、锁竞争严重。
- 典型用法:
stack:结合thread或trace查看IO等待的堆栈(如java.net.SocketInputStream.read)。vmtool结合lockInfo:查看对象持有锁的情况(Arthas 3.5+版本支持)。trace配合过滤:trace -j com.example.service.* * '#cost > 500'只打印耗时超过500ms的调用。
🔥 核心用法速记口诀(实际工作引用)
| 场景 | 命令 | 说明 |
|---|---|---|
| CPU高、死锁 | thread -n 5 / thread -b |
定位最忙线程、阻塞线程 |
| 慢方法捉虫 | trace + 类/方法 |
统计子调用耗时,V1.0.0 |
| 数据异常定位 | watch + -x |
打印输入输出值,深度展开 |
| 临时修复配置 | ognl / vmtool |
改静态变量、调Spring Bean方法 |
| 内存泄漏分析 | heapdump |
生成dump,离线分析 |
| 查看实例状态 | vmtool --action getInstances |
获取任意对象,看当前内部数据 |
⚠️ 注意事项
- 生产环境慎用:
redefine/ognl等动态修改命令可能引发不稳定,建议仅在严重故障时作为临时手段。 - 安全限制:部分命令(如
heapdump)占用较多资源,高峰期需谨慎。 - 配合日志:Arthas擅长实时调试,但长期监控靠日志和APM(如SkyWalking)。
如果你有具体线上问题(如某个接口慢、OOM、锁等待等),可以告诉我,我可以给你具体的Arthas排查步骤。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播