开发者学堂课程【线上问题排查利器 Alibaba Arthas(下):tt 命令的基本使用】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/747/detail/13206
tt 命令的基本使用
内容介绍
一.tt 命令的介绍
二.tt 命令使用案例
一.Tt 命令的介绍
(1)tt 含义:time-tunnel 时间隧道
穿越时空隧道,回到过去或到达未来。
(2)作用:记录下指定方法每次调用的入参和返回信息,并能对这些不同时间下调用的信息进行观测
(3)介绍:watch 虽然很方便和灵活,且用 watch 用的更多。但需要提前想清观测表达式的拼写,这对排查问题而言要求太高,因为很多时候并不清楚问题出自何方,只能靠蛛丝马迹进行猜测,且有时并不确定要靠哪个方法没办法写出表达式。
这时如果能记录下当时方法调用的所有入参和返回值,抛出的异常会对整个问题的思考与判断非常有帮助。于是,Timetunnel 命令就诞生了。
Timetunnel 较 watch 更详细,可以通过各种参数比较方便地查询。
调用时,检查所有的入参和返回,抛出的异常,然后再进行思考,于是就有了Timetunne时间通道。
(4)参数解析
Tt 参数 说明
-t 记录某个方法在一个时间段中的调用,这个时间段是它自己确定的,并没有设置它
-l 显示所有已经记录的列表
-n 次数 只记录多少次,如果不记录,就会一直记录下去,数值非常大。
-s 表达式 搜索表达式,记录出来的数据如果想在结果当中去查看一些信息,用-s 表达式
-i 索引号 查看指定索引号的详细调用信息
-p 重新调用指定的索引号时间碎片
输入-h,它会把所有参数写出来
输入-d,删除所有调用列表
-t
tt命令有很多个主参数,-t 是其中之一,这个参数表明希望记录下类Test的 print 方法的每次执行清况。
-n 3
当你执行一个调用量不高的方法时可能你还能有足够的时间用CTRL+C 中断 tt 命令记录的过程,但如果遇到调用量非常大的方法,瞬间就能将 JM 内存撑爆。
比时可以通过- n 参数指定你需要记录的次数,当达到记录次数时 Arthas 会主动中断 tt 命令的记录过程,避免人工操作无法停止的情况。
二.tt 命令使用案例
基本使用
- 最基本的使用来说,就是记录下当前方法的每次调用环境现场。
- Tt -t demo.MathGame primeFactors
输入[arthas@6523]$tt -t demo.MathGame primeFactors
再按回车,它开始记录,这个索引,它就是记录每次方法的调用环境的现场。
这里有众多参数,第一列是时间片段的编号,如果后面还要调动其它
tt 命令,它都是基于这个索引号的,而且编号是唯一的,不会重复。
如果挑第二次 tt 命令,从1012开始。
INOEX是编号,TIMESTAMP 是执行时间,记录了时间片段所发生
的时间,cost代表方法耗时多久,is-ret 方法是否是正常的形式返
回的,true 代表正常返回,false 代表抛异常,Is-ESP 代表是否抛
出异常,OBJECT 代表对象 hashCode,CLASS 代表执行的类的名
称,METHOD 代表执行的方法名。