Java 线上监控诊断工具 Arthas 使用

Arthas 是一款线上监控诊断产品,用来做线上问题排查。详细介绍见官方文档

安装并启动

可访问外网时

下载 arthas-boot.jarjava -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时需要连接外网,没有外网时:

  1. 下载全量包并解压
  2. 在解压得到的文件夹中找到arthas-boot.jar,执行java -jar arthas-boot.jar启动

简单使用

启动程序并连接到进程后:

使用 dashboard

输入dashboard,按回车/enter,会展示当前进程的实时数据面板,按 Ctrl+C 可以中断执行。

image-20240926220042373

使用 thread

输入thread,按回车/enter,会展示线程信息。

image-20240926220212735

执行thread 1会打印线程 ID 1 的栈。

image-20240926220359747

使用 jad

通过jad <className>来反编译指定类,<className>为类的全路径。

image-20240926220534726

使用 watch

通过watch demo.MathGame primeFactors returnObj命令来查看demo.MathGame#primeFactors方法的返回值。

image-20240926221119855

更多命令见命令列表

常用命令及解析

下面将基于 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
  • watchwatch 命令用于监控指定类中的方法调用,并输出相关信息。

  • demo.MathGame:这是要监控的类的全限定名。

  • primeFactors:这是要监控的方法名。

  • '{params,returnObj,throwExp}':这是输出格式,指定了您希望在方法调用时记录的信息。

    • params:表示输出方法的参数。
    • returnObj:表示输出方法的返回值。
    • throwExp:表示输出方法抛出的异常(如果有的话)。

    可以看到三者和输出信息之间的对应关系:

    image-20240926224005706

  • -n 5:指定监控的次数。在这个例子中,-n 5 表示监控前 5 次方法调用。

  • -x 3:指定输出的参数深度。-x 3 表示在输出参数时,最大递归深度为 3。

查看方法堆栈
stack demo.MathGame primeFactors -n 5

image-20240926225943488

查看方法代码
jad --source-only demo.MathGame primeFactors

image-20240926230118122

查看类中所有方法的入参/返回值/异常
watch demo.MathGame * '{params,returnObj,throwExp}' -n 5 -x 3

image-20240926231203215

参考:官方文档

posted @   Higurashi-kagome  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示