Arthas 基础教程

Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。在线排查问题,无需重启;动态跟踪 Java 代码;实时监控 JVM 状态。

Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

启动 arthas-demo

下载arthas-demo.jar,再用java -jar命令启动:

1
wget https://arthas.aliyun.com/arthas-demo.jar;java -jar arthas-demo.jar

arthas-demo是一个很简单的程序,它随机生成整数,再执行因式分解,把结果打印出来。如果生成的随机数是负数,则会打印提示信息。

启动 arthas-boot

在新的Terminal 2里,下载arthas-boot.jar,再用java -jar命令启动:

1
wget https://arthas.aliyun.com/arthas-boot.jar;java -jar arthas-boot.jar

arthas-bootArthas的启动程序,它启动后,会列出所有的 Java 进程,用户可以选择需要诊断的目标进程。

选择第一个进程,输入 1 ,再Enter/回车

1
1

Attach 成功之后,会打印 Arthas LOGO。输入 help 可以获取到更多的帮助信息。

1
help

Dashboard

dashboard 命令可以查看当前系统的实时数据面板。

1
dashboard

输入 q 或者 Ctrl+C 可以退出 dashboard 命令。

1
q

Thread

thread 1 命令会打印线程 ID 1 的栈。

1
thread 1

Ctrl+C Arthas 支持管道,可以用 thread 1 | grep 'main(' 查找到main class

1
thread 1 | grep 'main('

可以看到main classdemo.MathGame

1
2
$ thread 1 | grep 'main('
at demo.MathGame.main(MathGame.java:17)

Sc

可以通过 sc 命令来查找 JVM 里已加载的类:

1
sc -d *MathGame

Jad

可以通过 jad 命令来反编译代码:

1
jad demo.MathGame

Watch

通过watch命令可以查看函数的参数/返回值/异常信息。

1
watch demo.MathGame primeFactors returnObj

输入 q 或者 Ctrl+C 退出 watch 命令。

1
q

Exit/Stop

退出 Arthas

exit 或者 quit 命令可以退出 Arthas。

1
exit

退出 Arthas 之后,还可以再次用 java -jar arthas-boot.jar 来连接。

1
java -jar arthas-boot.jar

彻底退出 Arthas

exit/quit命令只是退出当前 session,arthas server 还在目标进程中运行。

想完全退出 Arthas,可以执行 stop 命令。

1
stop

https://start.aliyun.com/handson/arthas/arthas-basics-cn


Arthas 基础教程
https://blog.josway.cc/2022/04/25/yuque/Arthas 基础教程/
作者
JOSWAY
发布于
2022年4月25日
许可协议