Java诊断工具-Arthas
2019-08-16 本文已影响0人
zi萱
今天给大家介绍一款阿里开源的Java在线问题诊断工具-Arthas。
补充一些QA在功能测试中可能遇到的问题,这些问题用Arthas可以解决:
1.排查问题,让RD疯狂加日志
2.苦苦寻找数据流转方向,焦头烂额
3.RD要查bug,一遍遍的要我复现
一、安装
安装有许多方式,直接用命令行搞定。
curl -L https://alibaba.github.io/arthas/install.sh | sh
二、启动
./as.sh
选择要监控的进程,出现如下字样说明启动成功
image.png
三、使用方式
让我们输入help,看看发现了什么
提供了许多命令给我们使用
image.png
help <command>
让我们随意找一个命令,看看是如何使用他的,还有例子哦
image.png
四、小试牛刀
我目前最常用的功能是用它来排查问题,可以监控某个类的返回值、入参、异常信息等等。
可以使用watch或者tt来做,我更常使用tt。
//第一步,执行tt -t 查找到Object
ga?>tt -t <类名> 方法名
Press Ctrl+D to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 250 ms. 《如果此处class-cnt或者methd-cnt为0的话,就是没有找到相应的类或者方法,说明输入有误》
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| INDEX | PROCESS-ID | TIMESTAMP | COST(ms) | IS-RET | IS-EXP | OBJECT | CLASS | METHOD |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1010 | 1010 | 2019-03-14 17:02:53 | 18 | true | false | 0x66035d76 | <class> | <method> |
| | | | | | | | | mary |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
| 1011 | 1011 | 2019-03-14 17:02:53 | 19 | true | false | 0x66035d76 | <class> | <method> |
| | | | | | | | | mary |
+----------+------------+----------------------+------------+----------+----------+-----------------+--------------------------------+--------------------------------+
//第二步,退出当前命令
ctl + d
//第三步,tt -i打印所有信息,包括入参、返回值等
tt -i 1010 -x 3
五、问题
遇到的问题不算多啦。
- 我们项目使用了第三方提供的thrift接口,有时候要排查是否是第三方接口提供的数据问题。对于所调用的thrift接口,需要在类名后加$Client字符串,才可以获取到这个类哦~
【maybe对其他rpc接口也是需要加$Client的,不过我没有试验】
- 会有自定义对象无法格式化显示的问题,对于复杂对象的解析,使用的是OGNL语言,感兴趣可以学习一下https://github.com/alibaba/arthas/issues/11
六、官方文档
https://alibaba.github.io/arthas/install-detail.html
喜欢我的文章点点关注,加加赞哦~