watch命令使用
1,使用watch命令让你方便的观察到指定方法的调用情况,能观察
到的范围为:返回值、抛出异常、入参,通过编写 OGNL 表达式进行对应变量的查看
命令:watch 类reference 方法名称 “{params,returnObj,throwExp}” -x 遍历深度 -n 收集次数
1
| watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3
|
2,把观测数据记录到文件中
命令:监测命令 > 日志路径 &
1
| watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 10 > /tmp/arthas/watch.log &
|
3,增加耗时条件,cost>200(单位是ms)表示只有当耗时大于200ms时才会输出
1
| watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3 "#cost>200"
|
4,发生异常才观测,使用-e表示抛出异常时才触发收集,如下:
1
| watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3 -e
|
5,如果想查看方法运行前后,当前对象中的属性,可以使用target关键字,代表当前对象,也可以使用target.field_name访问当前对象的某个属性
1
| watch com.test.UserService query -n 3 "target"
|
tt命令使用
1,使用tt命令记录下方法的每次调用环境现场,次数=20:
1
| tt -t -n 20 com.test.UserService query
|
2,使用tt -l可以查看记录的列表:
3,使用tt -i index查看调用信息:
4,使用tt -i index -p重新发起一次请求:
5,tt跟踪的记录,如果需要清除,可以直接shutdown退出arthas命令
shell快速操作脚本生成
脚本名称:arthas.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #!/bin/bash
p1="$1"
if [ "$1" = "" ];then echo "请传入:方法Reference!如:sh arthas.sh com.test.UserService#query" exit 1 fi
echo "----------------------start--------------------------" echo "" echo "#####################生成方法监测命令tt和watch##################" echo "" echo '1,使用watch命令观察到方法的参数、返回和异常情况,深度=3、次数=3:' echo 'watch '${p1%#*}' '${p1##*#}' "{params,returnObj,throwExp}" -x 3 -n 3' echo "" echo '2,将观察记录到本地文件中:' echo 'watch '${p1%#*}' '${p1##*#}' "{params,returnObj,throwExp}" -x 3 -n 10 > /tmp/arthas/watch.log &' echo "" echo '3,只观察异常的请求:' echo 'watch '${p1%#*}' '${p1##*#}' "{params,returnObj,throwExp}" -x 3 -n 3 -e' echo "" echo '4,只观察大于200毫秒的请求:' echo 'watch '${p1%#*}' '${p1##*#}' "{params,returnObj,throwExp}" -x 3 -n 3 "#cost>200"' echo "" echo '5,观察请求方法对象,使用类似target.user形式的命令查看对象:' echo 'watch '${p1%#*}' '${p1##*#}' -n 3 "target"' echo "" echo '6,使用tt命令记录下方法的每次调用环境现场,次数=20:' echo 'tt -t -n 20 '${p1%#*}' '${p1##*#} echo "" echo '7,使用tt -l可以查看记录的列表:' echo 'tt -l' echo "" echo '8,使用tt -i index查看调用信息:' echo 'tt -i [替换为INDEX]' echo "" echo '9,使用tt -i index -p重新发起一次请求:' echo 'tt -i [替换为INDEX] -p' echo "" echo '10,使用tt -i index -w 'target'查看对象信息,也使用类似target.user形式的命令查看对象:' echo "tt -i [替换为INDEX] -w 'target'" echo "" echo "----------------------end----------------------------" echo ""
|
使用示例:
1
| sh arthas.sh com.test.UserService
|
生成脚本示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| ----------------------start--------------------------
#####################生成方法监测命令tt和watch##################
1,使用watch命令观察到方法的参数、返回和异常情况,深度=3、次数=3: watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3
2,将观察记录到本地文件中: watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 10 > /tmp/arthas/watch.log &
3,只观察异常的请求: watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3 -e
4,只观察大于200毫秒的请求: watch com.test.UserService query "{params,returnObj,throwExp}" -x 3 -n 3 "#cost>200"
5,观察请求方法对象,使用类似target.user形式的命令查看对象: watch com.test.UserService query -n 3 "target"
6,使用tt命令记录下方法的每次调用环境现场,次数=20: tt -t -n 20 com.test.UserService query
7,使用tt -l可以查看记录的列表: tt -l
8,使用tt -i index查看调用信息: tt -i [替换为INDEX]
9,使用tt -i index -p重新发起一次请求: tt -i [替换为INDEX] -p
10,使用tt -i index -w target查看对象信息,也使用类似target.user形式的命令查看对象: tt -i [替换为INDEX] -w 'target'
----------------------end----------------------------
|