arthas常用命令梳理


下载arthas

windows:https://alibaba.github.io/arthas/arthas-boot.jar

mac/linux:https://arthas.aliyun.com/arthas-boot.jar

源码及文档

https://github.com/alibaba/arthas

https://arthas.aliyun.com/doc/en/

启动arthas

java -jar /opt/arthas/arthas-boot.jar

Watch命令

//作用
?watch命令是监控某个类的某个方法的执行情况,包括入参,当前对象的属性,返参,异常情况。

//命令:
watch 包名.类名 方法名 "{params,target,returnObj,throwExp}" "#cost>10&¶ms[1]==101" -b -f -x 2

//参数:
1. 该命令表示显示方法的入参、异常堆栈,当前对象属性,返回值,分别对应params,target,returnObj,throwExp
2. throwExp要放最后,否则打不出异常,如果watch命令后面加上-e表示只有出现异常才会捕获
3. #cost>10表示耗时大于10ms,params[1]==101表示第1个参数值等于101,用&&表示交集
4. 默认没有加-b的情况下,params表示的是函数返回时,入参的值,而不是函数调用前的入参值,所以可以加上-b -f,这时一个结果是函数调用前入参值(不会有异常和返回值),
  第二个结果是函数返回后的结果,注意-b -f或者-b -e要放在-x前面
5. -x 2表示上述4个信息显示2个层级,如json可以显示2层。

monitor命令

//作用
monitor命令可以监控一定时间范围内某个类的某个方法的整体执行情况,如成功多少次,失败多少次,平均rt值

//命令
monitor -c 5 包名.类名 方法名 "#cost>1"

//参数
1. -c 5表示统计周期为5秒,默认是120秒,
2. -b这个命令不要加,是在统计前计算,好像有问题。
3. #cost>1表示只统计耗时大于1ms的请求,这个条件表达式几个命令都可以用的

trace命令

//作用
trace命令可以监控方法的每一个步骤的执行时长,以及方法内的业务执行的顺序

//命令
终端1执行:trace -n 5 包名.类名 方法名1 '#cost > 1' --skipJDKMethod false 

终端2执行:trace -n 5 包名.类名 方法名2 --listenerId 1

//参数
1. 监控执行时长超过1ms的方法每个具体步骤的执行时长
2. n=5表示执行5次后退出。
3. 默认jdk的方法 即java.*下的方法都不会打印,如果要完整打印,使用--skipJDKMethod false
4. 方法名2表示方法1中调用的方法
5. --listenerId 1 监听方法中指定方法在终端1中会显示监听id实现级联

thread命令

//作用
thread命令可以查看当前CPU较高的线程

//命令
thread -n 3 -i 1000 

//参数
1. 查看最近1000ms内CPU最高的3个线程