开发者学堂课程【线上问题排查利器 Alibaba Arthas(下):tt 命令的案例演示】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/747/detail/13207
tt 命令的案例演示
内容介绍
一.条件表达式
二.解决方法重载
三,解决指定参数
四.检索
五.查看调用信息
一.条件表达式
Arthas 似乎很难区分出重载的方法
只需要观察特定参数,但是tt却全部都记录了下来
条件表达式也是用OGNL来编写,核心价值观的判断对象依然是Advice对象。除了tt命令外,watch,trace,stack命令也都支持条件表达式。
二.解决方法重载
因为有些方法的方法名相同,参数的个数和类数不同,params是所有参数的速度,length是所有速度的长度,可以通过length知道参数指定的个数
tt-t*Test print params,length==1
通过制定参数个数的形式解决不同的方法签名,如果参数个数一样,你还可以这林写 tt -t* Test print param[1] instanceof Integer
三.解决指定参数
tt-t*lest print params〔0〕].mobile=="13989838402"//第0的参数的属性是一个具体的手机号码,这样可以指定具体的参数来确定调用的方法。
四.检索
查看时间片段,输入[arthas2@6523]$ tt-1,再按回车,进一步往下记录它的索引号是继续往下走的。
输入[arthas2@6523]$ tt-1就会显示2次记录的结果,基本上是1秒1次,如果只是想看其中的某个方法,可以指定表达式 -s这个参数,搜索。
[arthas2@6523]$ tt -s’method.name==“primeFactors”’这个现在无含义,因为现在检索的全是一个方法,所以这个地方就无含义,预现结果相同。回车,就只是一个方法把它显示出来,相当于在现有的结果里进行搜索。
五.查看调用信息
比如看1008,看信息是怎样调用,[arthas2@6523]$ tt -i 1008。这时会显示出1008的信息
INOEX表示编号,GMT-CREATE表示时间,COST是耗时,PARAMETERS[0]表示入参,@Integer表示返回值。
[arthas2@6523]$ tt -i
有时候当代码做了一些调整,那你可能需要前端系统重新触发一次调用,这时候需要别人配合,再次发起一次调用,这是比较麻烦,需要沟通,降低沟通成本。可以自己再调用刚刚的结果。
例如
[arthas2@6523]$ tt -i 1008 -p//-p即重新调用一次
[arthas2@6523]$ tt -i 1008 -p--replay-times
调用一次1 times
调用两次2 times
调用三次3 times
还可以指定隔多久调一次,interval表示时间间隔,默认它隔一秒钟调用一次
也可设置为过两秒调用一次,参数是相同的。
小结:作用:记录指定方法每次调用的入参和返回值,并后期还可以对这些信息进行观测。
-t 记录方法在一个时间段中调用
-l 显示所有已经记录的列表
-n次数 只记录多少次
-s搜索表达式 指定搜索表达式
-i索引号 查看它的详细信息