Arthas monitor(方法执行监控)

@toc

二、命令列表

2.3 monitor/watch/trace/stack/tt 相关

使用场景

monitor 命令在 Arthas 中用于监控方法的调用情况,能够实时查看某个方法的执行时间、调用次数、成功率等性能指标。它适用于以下场景:

  1. 性能调优:识别性能瓶颈,找到耗时较长的方法。
  2. 故障排查:监控特定方法的调用,观察异常或错误发生的频率。
  3. 实时分析:动态查看方法调用的趋势,获取运行时的数据。

通过 monitor 命令,可以帮助开发者更好地理解应用的运行状态,从而进行针对性的优化。
注意:

请注意,这些命令,都通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,请尽量明确需要观测的类、方法以及条件,诊断结束要执行 stop 或将增强过的类执行 reset 命令。

2.3.1 monitor(方法执行监控)

提示

方法执行监控。

对匹配 class-patternmethod-patterncondition-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对应用采样,生成火焰图)

重要信息

相关推荐
葫芦和十三5 小时前
图解 MongoDB 05|文档模型设计:内嵌 vs 引用,反范式不是免费午餐
后端·mongodb·agent
ZhengEnCi6 小时前
09bad-斯坦福CS336作业一-构建优化器
人工智能
ZhengEnCi7 小时前
09bac-斯坦福CS336作业一-实现训练损失计算
人工智能
冬奇Lab7 小时前
Skill 系列(01):Skill 评测体系——如何量化一个 AI Skill 的质量
人工智能
不能放弃治疗8 小时前
单 Agent 实现模式
后端
IT_陈寒10 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
fliter11 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
用户35218024547512 小时前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
fliter12 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪12 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源