@[toc]
二、命令列表
2.3 monitor/watch/trace/stack/tt 相关
使用场景
:
monitor
命令在 Arthas 中用于监控方法的调用情况,能够实时查看某个方法的执行时间、调用次数、成功率等性能指标。它适用于以下场景:
- 性能调优:识别性能瓶颈,找到耗时较长的方法。
- 故障排查:监控特定方法的调用,观察异常或错误发生的频率。
- 实时分析:动态查看方法调用的趋势,获取运行时的数据。
通过
monitor
命令,可以帮助开发者更好地理解应用的运行状态,从而进行针对性的优化。
注意:请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。
2.3.1 monitor(方法执行监控)
提示
方法执行监控。
对匹配 class-pattern
/method-pattern
/condition-express
的类、方法的调用进行监控。
monitor
命令是一个非实时返回命令.
实时返回命令是输入之后立即返回,而非实时返回的命令,则是不断的等待目标 Java 进程返回信息,直到用户输入 Ctrl+C
为止。
服务端是以任务的形式在后台跑任务,植入的代码随着任务的中止而不会被执行,所以任务关闭后,不会对原有性能产生太大影响,而且原则上,任何 Arthas 命令不会引起原有业务逻辑的改变。
监控的维度说明:
监控项 | 说明 |
---|---|
timestamp | 时间戳 |
class | Java 类 |
method | 方法(构造方法、普通方法) |
total | 调用次数 |
success | 成功次数 |
fail | 失败次数 |
rt | 平均 RT |
fail-rate | 失败率 |
参数说明:
方法拥有一个命名参数 [c:]
,意思是统计周期(cycle of output),拥有一个整型的参数值
参数名称 | 参数说明 |
---|---|
class-pattern | 类名表达式匹配 |
method-pattern | 方法名表达式匹配 |
condition-express | 条件表达式 |
[E] | 开启正则表达式匹配,默认为通配符匹配 |
[c:] |
统计周期,默认值为 120 秒 |
[b] | 在方法调用之前计算 condition-express |
[m <arg>] |
指定 Class 最大匹配数量,默认值为 50。长格式为[maxMatch <arg>] 。 |
举例1:监控demo.MathGame
类,并且每5S更新一次状态。
基础语法
: monitor 全路径类名 方法名 -c 秒数
sql
$ monitor -c 5 demo.MathGame primeFactors
Press Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:1) cost in 94 ms.
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:06:38 demo.MathGame primeFactors 5 1 4 1.15 80.00%
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:06:43 demo.MathGame primeFactors 5 3 2 42.29 40.00%
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:06:48 demo.MathGame primeFactors 5 3 2 67.92 40.00%
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:06:53 demo.MathGame primeFactors 5 2 3 0.25 60.00%
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:06:58 demo.MathGame primeFactors 1 1 0 0.45 0.00%
timestamp class method total success fail avg-rt(ms) fail-rate
-----------------------------------------------------------------------------------------------
2018-12-03 19:07:03 demo.MathGame primeFactors 2 2 0 3182.72 0.00%
本人其他相关文章链接
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对应用采样,生成火焰图)

重要信息



