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

在系统没有监控平台,或者监控平台,如PinPoint故障时,想要监控某个方法耗时可以借助Arthas

  • 解压 并启动

安装包下载完成后,进行解压,然后进入arthas bin目录(我这是Windows系统演示)

启动时,确保已经安装了JDK,然后使用java -jar命令启动arthas

启动成功后,会列出进程;选择要进入的进程标号对应的数字,如[1];直接输入 1,回车

  • 使用Trace命令 监控目标方法
html 复制代码
# Trace命令行
# 监控 ArtemisDoorServiceImpl实现类中的getDoorControlPointList方法
trace -E com.framework.service.impl.ArtemisDoorServiceImpl getDoorControlPointList

# 查看多个类多个方法的执行轨迹,用"|"分隔,两边不能有空格
trace -E com.framework.service.impl.ArtemisDoorServiceImpl|com.framework.service.impl.ArtemisDoor2ServiceImpl getDoorControlPointList|getDoorControlPointList2

其中,前面是类的Reference路径,后面跟方法名

除了Trace命令以外还可以使用monitor、watch命令对方法进行监控

monitor---方法执行监控

watch---方法执行数据观测

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

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

  • Postman请求响应的接口,可以看到控制台打印出方法的耗时

查看方法执行入参

html 复制代码
$ watch com.framework.service.impl.ArtemisDoorController hello params

查看方法执行的返回值

html 复制代码
$ watch com.framework.service.impl.ArtemisDoorController hello returnObj
相关推荐
k***92161 小时前
【C++】继承和多态扩展学习
java·c++·学习
weixin_440730501 小时前
java结构语句学习
java·开发语言·学习
JIngJaneIL1 小时前
基于java+ vue医院管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
Coder_Boy_1 小时前
Spring AI 源码大白话解析
java·人工智能·spring
仙俊红1 小时前
在 Java 中,`==` 和 `equals()` 的区别
java·开发语言·jvm
计算机学姐1 小时前
基于SpringBoot的高校论坛系统【2026最新】
java·vue.js·spring boot·后端·spring·java-ee·tomcat
予枫的编程笔记1 小时前
Redis 核心数据结构深度解密:从基础命令到源码架构
java·数据结构·数据库·redis·缓存·架构
JIngJaneIL2 小时前
基于java + vue校园跑腿便利平台系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
飞舞花下2 小时前
MAVEN私有仓库配置-Nexus私有仓库
xml·java·maven
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于SpringBoot的健身房管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端