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。

比如我们现在要查看某个类的某个方法的返回值,直接输入命令即可。 image.png 而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

五、问题

遇到的问题不算多啦。

  1. 我们项目使用了第三方提供的thrift接口,有时候要排查是否是第三方接口提供的数据问题。对于所调用的thrift接口,需要在类名后加$Client字符串,才可以获取到这个类哦~
【maybe对其他rpc接口也是需要加$Client的,不过我没有试验】
  1. 会有自定义对象无法格式化显示的问题,对于复杂对象的解析,使用的是OGNL语言,感兴趣可以学习一下https://github.com/alibaba/arthas/issues/11

六、官方文档

https://alibaba.github.io/arthas/install-detail.html

喜欢我的文章点点关注,加加赞哦~
上一篇下一篇

猜你喜欢

热点阅读