一、monitor:对匹配的类、方法、表达式的调用进行监控,统计总调用、成功、失败、平台响应时间、失败率数据。命令参数
class-pattern类名表达式匹配
method-pattern方法名表达式匹配
condition-express条件表达式(格式:“params[0] <= 2”)
-n指定执行次数限制,根据执行时间过滤:'#cost>5'
基于监控数据可以初步判断当前方法在指定周期内的运行状态:调用量、平均响应时间、调用失败率,初步判断方法是否存在调用异常情况,配合stack、watch、trace、tt命令进一步诊断详细问题 。
二、watch
三、stack
四、trace:追踪方法链路并输出方法路径上的每个节点上耗时,对于耗时最长的代码行会标红。
1、在日志不足的情况下可以查看方法调用的链路,执行了哪些代码行(java文件均可分析),在哪个步骤返回;如:
再如下面一个方法在异步线程中调用,且日志没有捕获异常,查看日志发现代码行不继续往下走, 而分析不出来具体原因,通过arthas追踪如下:
2、可以用作性能分析。
如:
五、tt:方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测。
1、
-i: 指定特定index,查看详细信息
-t: 表明希望记录下类*Test的print方法的每次执行情况。
-n: 指定需要记录的次数,当达到记录次数时Arthas会主动中断tt命令的记录过程,避免人工操作无法停止的情况。
-p: 重做一次调用(replay-times指定调用次数,replay-interval指定多次调用间隔)
-w: 观察时空隧道使用ognl 表达式。使用表达式核心变量中所有变量作为已知条件编写表达式
2、
INDEX 时间片段记录编号,每一个编号代表着一次调用,后续tt还有很多命令都是基于此编号指定记录操作,非常重要
TIMESTAMP 方法执行的本机时间,记录了这个时间片段所发生的本机时间
COST(ms) 方法执行的耗时
IS-RET 方法是否以正常返回的形式结束
IS-EXP 方法是否以抛异常的形式结束
OBJECT 执行对象的hashCode(),注意,曾经有人误认为是对象在JVM中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体
CLASS 执行的类名
METHOD 执行的方法名
3、举例: