Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)

@[toc]
二、命令列表
2.3 monitor/watch/trace/stack/tt 相关
2.3.3 trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)
使用场景
:
trace
命令在 Arthas 中用于跟踪方法的执行过程,能够详细记录方法调用的时间、参数、返回值等信息。它的主要使用场景包括:
性能分析:帮助识别方法调用的耗时,找出性能瓶颈。
调试:追踪方法的执行路径,了解方法内部的逻辑流动。
问题定位:快速捕获异常信息,了解异常发生的上下文。
通过
trace
命令,开发者可以获得深入的执行信息,从而更有效地优化和调试应用程序。
提示
方法内部调用路径,并输出方法路径上的每个节点上耗时
watch/stack/trace 这个三个命令都支持
#cost
trace
命令能主动搜索 class-pattern
/method-pattern
对应的方法调用路径,渲染和统计整个调用链路上的所有性能开销和追踪调用链路。
参数说明
这里重点要说明的是条件表达式
,条件表达式
的构成主要由 ognl 表达式组成,所以你可以这样写"params[0]<0"
,只要是一个合法的 ognl 表达式,都能被正常支持。
请参考表达式核心变量中关于该节点的描述。
很多时候我们只想看到某个方法的 rt 大于某个时间之后的 trace 结果,现在 Arthas 可以按照方法执行的耗时来进行过滤了,例如trace *StringUtils isBlank '#cost>100'
表示当执行时间超过 100ms 的时候,才会输出 trace 的结果。
注意事项
:
trace
能方便的帮助你定位和发现因 RT 高而导致的性能问题缺陷,但其每次只能跟踪一级方法的调用链路。3.3.0 版本后,可以使用动态 Trace 功能,不断增加新的匹配类
目前不支持
trace java.lang.Thread getName
,考虑到不是非常必要场景,且修复有一定难度,因此当前暂不修
举例 1:查看方法整体耗时
基础语法
:trace 全路径类名 方法名
提示
结果里的
#24
,表示在 run 函数里,在源文件的第24
行调用了primeFactors()
函数。
举例 2:trace 次数限制
如果方法调用的次数很多,那么可以用-n
参数指定捕捉结果的次数。比如下面的例子里,捕捉到一次调用就退出命令。
基础语法
:trace 全路径类名 方法名 -n 次数
本人其他相关文章链接
1.Arthas 全攻略:让调试变得简单2.Arthas dashboard(当前系统的实时数据面板)3.Arthas thread(查看当前JVM的线程堆栈信息)4.Arthas jvm(查看当前JVM的信息)5.Arthas sysprop(查看和修改JVM的系统属性)6.Arthas sysenv(查看JVM的环境变量)7.Arthas vmoption(查看和修改 JVM里诊断相关的option)8.Arthas getstatic(查看类的静态属性 )9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)10.Arthas logger(查看 logger 信息,更新 logger level)11.Arthas mbean(查看 Mbean 的信息)12.Arthas memory(查看 JVM 内存信息)13.Arthas ognl(执行ognl表达式)14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)16.Arthas jad(字节码文件反编译成源代码 )17.Arthas mc(Memory Compiler/内存编译器 )18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)20.Arthas sc(查看JVM已加载的类信息 )21.Arthas sm(查看已加载类的方法信息 )22.Arthas monitor(方法执行监控)23.Arthas stack (输出当前方法被调用的调用路径)24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)26.Arthas watch (方法执行数据观测)27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)
版权声明: 本文为 InfoQ 作者【刘大猫】的原创文章。
原文链接:【http://xie.infoq.cn/article/c468ba5c8cfa7f48f5673c667】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论