使用 Arthas 诊断生产服务器 Java 进程

在Linux服务器上使用Arthas进行Java应用诊断,主要分为安装、启动和常用命令操作几个步骤。

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. 退出与卸载

  • 退出诊断:输入quitexit断开连接(不影响目标应用)
  • 完全卸载:删除~/.arthas目录和logs/arthas日志文件

    Arthas作为非侵入式诊断工具,特别适合在不重启服务的情况下快速定位线上问题。建议结合官方文档深入学习复杂场景的使用技巧:Arthas官方教程

本站简介

聚焦于全栈技术和量化技术的技术博客,分享软件架构、前后端技术、量化技术、人工智能、大模型等相关文章总结。