Java 应用诊断利器,Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。有如下特性

  • Dashboard面板:实时查看系统的运行状况
  • 查看入参/返回值/异常:查看函数调用的参数,返回值和异常
  • 在线热更新:jad/sc/redefine 一条龙热更新代码
  • 类冲突:秒解类冲突问题,定位类加载路径
  • 性能热点:快速定位应用的热点,生成火焰图
  • WebConsole:在线诊断,点开网页诊断线上应用


Github:https://github.com/alibaba/arthas

1.1 启动Demo

下载可执行文件jar包

curl -O https://arthas.aliyun.com/arthas-demo.jar

执行程序命令:java -jar arthas-demo.jar -h,打印如下信息

:arthas xxxxx$ java -jar arthas-demo.jar -h
114374=2*13*53*83
illegalArgumentCount:  1, number is: -105385, need >= 2
82427=139*593
illegalArgumentCount:  2, number is: -140560, need >= 2
illegalArgumentCount:  3, number is: -176536, need >= 2
74829=3*24943
illegalArgumentCount:  4, number is: -13745, need >= 2

1.2 启动arthas

再打开另外一个可执行窗口终端,并下载可执行文件jar包

curl -O https://arthas.aliyun.com/arthas-boot.jar

执行程序命令:java -jar arthas-boot.jar,打印如下信息

:arthas xxxxx$ java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.5.0
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 9221 arthas-demo.jar

根据他提示,选择要监控的程序的序列号并输入到控制台,整体如下。Demo进程是第1个,则输入1,再输入回车/enter。Arthas会attach到目标进程上,并输出日志

:arthas xxxxx$ java -jar arthas-boot.jar
[INFO] arthas-boot version: 3.5.0
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 9221 arthas-demo.jar
1
[INFO] arthas home: /Users/Aion/.arthas/lib/3.5.0/arthas
[INFO] Try to attach process 9221
[INFO] Attach process 9221 success.
[INFO] arthas-client connect 127.0.0.1 3658
  ,---.  ,------. ,--------.,--.  ,--.  ,---.   ,---.
 /  O  \ |  .--. ''--.  .--'|  '--'  | /  O  \ '   .-'
|  .-.  ||  '--'.'   |  |   |  .--.  ||  .-.  |`.  `-.
|  | |  ||  |\  \    |  |   |  |  |  ||  | |  |.-'    |
`--' `--'`--' '--'   `--'   `--'  `--'`--' `--'`-----'


wiki       https://arthas.aliyun.com/doc
tutorials  https://arthas.aliyun.com/doc/arthas-tutorials.html
version    3.5.0
main_class demo.MathGame
pid        9221
time       2021-04-15 10:00:03

[arthas@9221]$

执行成功后,可以使用一些官方提供的命令来监控。

1.3 查看dashboard

可以在命令行窗口输入命令dashboard,然后可以看到当前系统实时数据面板数据。也可以登录到PC页面来查看实时数据面板默认的访问地址为http://localhost:8563/ 。

java 热力图颜色设置 java生成热力图工具包_Alibaba


其他操作参考附录

1.4 卸载/删除arthas

  • 在 Linux/Unix/Mac 平台
    删除下面文件:
rm -rf ~/.arthas/
rm -rf ~/logs/arthas
  • Windows平台
    直接删除user home下面的.arthaslogs/arthas目录

1.5 命令

基础命令列表

命令

说明

备注

help

看命令帮助信息

cls

清空当前屏幕区域

session

查看当前会话的信息

reset

重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类

version

输出当前目标 Java 进程所加载的 Arthas 版本号

history

打印命令历史

quit

退出当前 Arthas 客户端,其他 Arthas 客户端不受影响

exit

退出当前 Arthas 客户端,其他 Arthas 客户端不受影响

stop

完全退出arthas

shutdown

关闭 Arthas 服务端,所有 Arthas 客户端全部退出

keymap

Arthas快捷键列表及自定义快捷键

增强命令列表

命令

说明

备注

dashboard

当前系统的实时数据面板。

thread

查看当前线程信息,查看线程的堆栈。

jvm

查看当前JVM信息

sysprop

查看当前JVM的系统属性(System Property)

sysenv

查看当前JVM的环境属性(System Environment Variables)

getstatic

通过getstatic命令可以方便的查看类的静态属性。使用方法为getstatic class_name field_name

ognl

执行ognl表达式

sc

查看JVM已加载的类信息,这个命令支持的参数有 [d]、[E]、[f] 和 [x:]

sm

sm 命令只能看到由当前类所声明 (declaring) 的方法,父类则无法看到

dump

dump 已加载类的 bytecode 到特定目录

jad

反编译指定已加载类的源码

classloader

查看classloader的继承树,urls,类加载信息

redefine

加载外部的.class文件,redefine jvm已加载的类。

monitor

方法执行监控,对匹配 class-pattern/method-pattern的类、方法的调用进行监控

watch

方法执行数据观测,能方便的观察到指定方法的调用情况

trace

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

stack

输出当前方法被调用的调用路径

tt

方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息。

options

全局开关

FAQ

Q1: try to set the same JAVA_HOME
Target VM JAVA_HOME is HOME/Contents/jbr/Contents/Home, arthas-boot JAVA_HOME is JRR_HOME/Home/jre, try to set the same JAVA_HOME

A1
不知道怎么处理,我这边重新启动就可以了