Java 线上监控诊断工具 Arthas 使用
Arthas 是一款线上监控诊断产品,用来做线上问题排查。详细介绍见官方文档。
安装并启动
可访问外网时
下载 arthas-boot.jar,java -jar arthas-boot.jar
启动程序:
$ java -jar arthas-boot.jar * [1]: 35542 [2]: 71560 math-game.jar
选择需要排查问题的进程的序号,math-game
进程是第 2 个,则输入 2。有时候程序无法列出进程,可以使用java -jar arthas-boot.jar <PID>
直接连接指定 PID 的进程。
无法访问外网时
上面执行java -jar arthas-boot.jar
时需要连接外网,没有外网时:
- 下载全量包并解压
- 在解压得到的文件夹中找到
arthas-boot.jar
,执行java -jar arthas-boot.jar
启动
简单使用
启动程序并连接到进程后:
使用 dashboard
输入dashboard
,按回车/enter
,会展示当前进程的实时数据面板,按 Ctrl+C 可以中断执行。
使用 thread
输入thread
,按回车/enter
,会展示线程信息。
执行thread 1
会打印线程 ID 1 的栈。
使用 jad
通过jad <className>
来反编译指定类,<className>
为类的全路径。
使用 watch
通过watch demo.MathGame primeFactors returnObj
命令来查看demo.MathGame#primeFactors
方法的返回值。
更多命令见命令列表。
常用命令及解析
下面将基于 MathGame.java 介绍arthas idea
提供的一些常用的命令,arthas idea
是一个方便生成 Arthas 命令的 IDEA 插件。
查看方法入参/返回值/异常
选中指定primeFactors
的方法名,右键——Arthas Command——Quickly Get Available Command
,其中提供了如下命令:
watch demo.MathGame primeFactors '{params,returnObj,throwExp}' -n 5 -x 3
-
watch
:watch
命令用于监控指定类中的方法调用,并输出相关信息。 -
demo.MathGame
:这是要监控的类的全限定名。 -
primeFactors
:这是要监控的方法名。 -
'{params,returnObj,throwExp}'
:这是输出格式,指定了您希望在方法调用时记录的信息。params
:表示输出方法的参数。returnObj
:表示输出方法的返回值。throwExp
:表示输出方法抛出的异常(如果有的话)。
可以看到三者和输出信息之间的对应关系:
-
-n 5
:指定监控的次数。在这个例子中,-n 5
表示监控前 5 次方法调用。 -
-x 3
:指定输出的参数深度。-x 3 表示在输出参数时,最大递归深度为 3。
查看方法堆栈
stack demo.MathGame primeFactors -n 5
查看方法代码
jad --source-only demo.MathGame primeFactors
查看类中所有方法的入参/返回值/异常
watch demo.MathGame * '{params,returnObj,throwExp}' -n 5 -x 3
参考:官方文档
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?