CiZai' ink

Back

🛠️ Arthas 简介#

Arthas(阿尔萨斯)是阿里巴巴在2018年9月开源的一款强大的 Java 诊断工具,支持 JDK 6 及以上版本,提供命令行交互模式,支持多平台(Linux/Mac/Windows),并且带有 Tab 自动补全功能。Arthas 能够帮助开发者在不修改代码、不重启服务的情况下,对 Java 应用线上问题进行快速诊断和定位。

🤔 为什么需要 Arthas?#

日常开发中,遇到以下Java问题时,传统方法效率低:

  • CPU负载飙高,但无法定位具体线程
  • 线程死锁导致系统卡死,难实时查看线程状态
  • 应用响应变慢,方法调用链不明确
  • 线上代码和预期不一致,热部署后代码未生效
  • 生产环境禁止远程调试,无法实时查看变量
  • 缺乏实时的 JVM 状态和性能监控

正因为这些痛点,Arthas 应运而生,帮助开发者实现问题定位、实时监控和代码热更新等功能。

📦 安装和启动 Arthas#

安装方式#

最简单的方法是下载官方提供的 arthas-boot.jar:

## 从GitHub下载
curl -O https://arthas.aliyun.com/arthas-boot.jar

## 国内用户推荐从Gitee下载
curl -O https://arthas.gitee.io/arthas-boot.jar
bash

启动方式#

使用 java -jar 命令启动:

## 启动 Arthas 并选择 Java 进程
java -jar arthas-boot.jar

## 或者直接指定进程PID
java -jar arthas-boot.jar [PID]
bash

运行后,会列出系统上的 Java 进程,选择需要诊断的进程编号即可。

📋 Arthas 常用命令#

Arthas 命令丰富,可分为以下几类:

基础命令#

命令功能说明
help查看命令帮助信息
cat打印文件内容
grep搜索满足条件的结果
pwd返回当前工作目录
cls清空当前屏幕
session查看当前会话信息
reset重置类增强状态
version输出当前Arthas版本号
quit退出当前客户端
shutdown关闭 Arthas 服务端

监控命令#

命令功能说明
dashboard显示当前系统实时数据面板
thread查看 JVM 线程堆栈信息
jvm查看 JVM 信息
sysprop查看和修改 JVM 系统属性
sysenv查看 JVM 环境变量
vmoption查看和修改 JVM 诊断相关选项
perfcounter查看 JVM 性能计数器信息
logger查看和修改日志级别

类操作命令#

命令功能说明
sc查看已加载类信息
sm查看类的方法信息
jad反编译已加载类的源码
mc内存编译 Java 文件为 Class 文件
redefine重定义已加载类
dump导出已加载类的字节码
classloader查看类加载器继承树、路径等信息

增强命令(需谨慎)#

命令功能说明
monitor方法执行监控
watch监控方法的入参和返回值
trace跟踪方法调用路径及耗时
stack输出当前方法调用路径
tt记录方法调用参数和返回值的时空隧道

🎯 实用案例#

案例1:定位 CPU 使用率高的线程#

使用 thread -n 3 查看 CPU 使用率最高的三个线程,定位具体消耗资源的线程及堆栈。

案例2:排查应用响应慢的问题#

使用 trace 命令跟踪接口方法调用,找出耗时最长的方法。

案例3:查看类加载信息#

使用 sc -d 类名 查看指定类的详细加载信息,包括类加载路径、类加载器等,有助于排查类加载异常。

案例4:检测并修复线程死锁#

使用 thread -b 命令查找死锁线程,定位互相等待锁的线程。

案例5:观察方法的入参和返回值#

使用 watch 类名 方法名 "{params, returnObj}" -x 2 实时查看方法调用的参数和返回值,方便调试和理解业务行为。

🌐 Arthas Web Console#

Arthas 提供了图形化 Web Console,启动 Arthas 后访问:http://127.0.0.1:8563/

Web Console 与命令行功能一致,支持命令历史和实时反馈,便于团队协作与问题排查。

⚠️ 注意事项#

  • Arthas 是诊断工具,生产环境使用需谨慎,需申请审批,建议避免在高峰期操作。
  • 某些命令(如 trace、watch、tt)会修改字节码,可能影响性能,长期运行可能带来内存泄漏风险。
  • 增强类会在 Arthas 退出时自动重置,可手动执行 reset 命令。
  • 生产环境使用时应严格权限控制和操作日志记录。

📝 总结#

通过本文,您已掌握 Arthas 的基础知识和实战应用,能够使用它高效排查Java线上问题,提升调优能力。建议在项目中多练习,逐步熟练掌握这款强大工具。

官方文档:https://arthas.aliyun.com/doc/ GitHub 仓库:https://github.com/alibaba/arthas 在线教程:https://arthas.aliyun.com/doc/arthas-tutorials.html 社区论坛:https://github.com/alibaba/arthas/discussions

Arthas的简单使用
https://arthals.ink/blog/arthas
Author CiZai
Published at August 5, 2025
Comment seems to stuck. Try to refresh?✨