1. 安装Arthas
推荐使用arthas-boot.jar方式安装:
# 下载arthas-boot.jar
curl -O https://arthas.aliyun.com/arthas-boot.jar
# 启动Arthas
java -jar arthas-boot.jar
执行后会自动检测当前运行的Java进程,输入对应进程编号即可连接。
2. 常用诊断命令
连接成功后,可使用以下核心命令进行实时诊断:
| 命令 | 功能 | 示例 |
|---|---|---|
dashboard |
实时监控JVM状态(线程、内存、GC) | dashboard -i 2000(每2秒刷新) |
thread |
分析线程状态(定位CPU飙高、死锁) | thread -n 3(显示CPU占用最高的3个线程) |
trace |
追踪方法调用链路及耗时 | trace com.example.Service method '#cost > 100'(耗时>100ms) |
watch |
监控方法入参/返回值/异常 | watch com.example.Service getUser "{params, returnObj}" |
jad |
反编译类源码 | jad com.example.Service |
heapdump |
生成堆内存dump文件 | heapdump /tmp/heap.hprof |
3. 典型使用场景
- CPU飙高排查:
thread -n 3 # 查看最耗CPU的线程 thread <thread_id> # 查看线程堆栈 - 方法性能分析:
trace com.example.OrderService createOrder '#cost > 50' # 监控耗时>50ms的调用 - 线上代码验证:
jad com.example.UserService # 反编译确认代码版本
4. 注意事项
- 权限要求:执行用户需与目标Java进程用户一致,否则会提示
Permission denied - 端口冲突:若默认端口3658被占用,启动时指定新端口:
java -jar arthas-boot.jar --telnet-port 9998 --http-port 8888 - 生产环境建议:通过
--repo-mirror aliyun使用阿里云镜像加速下载
5. 退出与卸载
- 退出诊断:输入
quit或exit断开连接(不影响目标应用) - 完全卸载:删除
~/.arthas目录和logs/arthas日志文件Arthas作为非侵入式诊断工具,特别适合在不重启服务的情况下快速定位线上问题。建议结合官方文档深入学习复杂场景的使用技巧:Arthas官方教程。