02-Arthas阿里开源诊断工具
参考资料(官网): https://arthas.gitee.io/index.html
参考资料(阿里云官方CSDN): Arthas 使用的四种方式
参考资料: 使用 Arthas 五分钟解决一个问题
1. 安装
下载并启动:
1 |
|
如果下载慢,可以使用阿里云镜像:
1 |
|
启动后可以选择应用java进程:
1 |
|
进入进程后,也可以通过 Arthas Console 自有的控制台: http://localhost:8563/
或者在 arthas-boot 启动前,使用 jps
命令可以快速查看当前启动的 java 进程PID和进程名称:
1 |
|
全局命令说明:
- -x 是展示结果属性遍历深度,默认为 1
- -n 是执行的次数 ,q 退出
- -c classloader 的hash值
- 退出 q ,关闭 stop
2. 快速诊断
2.1 快速诊断流程
一、定位相关方法
二、生成观测方法命令:
arthas idea
插件,在方法上右键,Arthas Command
-Watch
或Trace
三、登陆应用服务器
四、curl 或拷贝 jar 包安装 Arthas
五、运行 Arthas
六、执行观测方法命令
七、查看观测结果
dashboard
查看当前进程的实时面板数据。
1 |
|
thread
查看当前线程信息,查看线程的堆栈
1 |
|
at demo.MathGame.main(MathGame.java:17)
jad
反编译指定已加载类的源码,查看代码是否是最新的。
1 |
|
★ watch
可以查看入参、返回值、异常、可以执行表达式获取静态变量、target.xxx调用目标实施的字段、方法等等,只要你想得到没有做不到的。
1 |
|
- params 参数
- returnObj 返回值
- throwExp 异常
- -n 5 表示只执行5次
- -x 3 表示遍历深度,可以调整来打印具体的参数和结果内容,默认值是1
★ trace
方法内部调用路径,并输出方法路径上的每个节点上耗时 —— 定位代码中执行慢的逻辑,性能优化!
1 |
|
- 没有被trace到的函数。比如java.* 下的函数调用默认会忽略掉。通过增加–skipJDKMethod false参数可以打印出来。
3. 高级命令
进阶使用 — Arthas 3.5.5 文档 (gitee.io)
命令列表 — Arthas 3.5.5 文档 (gitee.io)
4. IDEA 插件
arthas idea
安装了“arthas idea”插件之后,在方法名上面单击右键,选择watch,就生成方法观测命令在粘贴板中:
5. 命令图示详解
02-Arthas阿里开源诊断工具
https://janycode.github.io/2022/02/20/09_调试测试/05_线上问题/02-Arthas阿里开源诊断工具/