Java 诊断工具 arthas-boot 安装步骤及常用命令

arthas 是 Alibaba 开源的 Java 诊断工具,它的特点是使用方便,功能强大。最重要的是,arthas可以监察生产环境下的项目,使用的过程无需重启项目。

官方文档:https://alibaba.github.io/arthas

在这里插入图片描述

一、安装

第1步, 下载 arthas-boot.jar 文件:https://arthas.aliyun.com/arthas-boot.jar

第2步, 为了测试运行,在本地系统运行一个Java程序,比如在 IDEA 中写一个死循环并运行:

在这里插入图片描述

第3步, 打开cmd,进入arthas-boot.jar所在目录,执行命令

java -jar arthas-boot.jar

在这里插入图片描述

随后选择需要挂载的 Java 程序,这里我们要监控的是 Test3 这个类,所以在控制台输入1并回车。

在这里插入图片描述

等到出现以下 arthas 的图案,就说明运行成功了。

在这里插入图片描述

二、常用命令

2.1 dashboard 命令

可以直观的看到当前Java程序的线程CPU情况和状态,以及内存占用最多的对象信息

Java 诊断工具 arthas-boot 安装步骤及常用命令_第1张图片

2.2 thread 命令

列出当前Java程序中的所有线程的信息。

thread

Java 诊断工具 arthas-boot 安装步骤及常用命令_第2张图片

列出死锁线程的信息:

thread -b

Java 诊断工具 arthas-boot 安装步骤及常用命令_第3张图片

2.3 jvm 命令

列出虚拟机相关信息,例如GC算法类型

[arthas@14500]$ jvm
...
...
----------------------------------------------------------------------------
 COMPILATION
----------------------------------------------------------------------------
 NAME                              HotSpot 64-Bit Tiered Compilers
 TOTAL-COMPILE-TIME                1306
 [time (ms)]

----------------------------------------------------------------------------
 GARBAGE-COLLECTORS	# 当前JVM使用了什么垃圾回收器
----------------------------------------------------------------------------
 PS Scavenge                       name : PS Scavenge
 [count/time (ms)]                 collectionCount : 12
                                   collectionTime : 101
 PS MarkSweep                      name : PS MarkSweep
 [count/time (ms)]                 collectionCount : 3
                                   collectionTime : 306

2.4 jad 命令

它是一个在线反编译指令。

反编译在某些情况下还是有用的,比如当团队编写的代码无误,但是项目上线后却发现代码输出错误,那么这时候就可以使用jad在线反编译某个文件,查看它最终的代码,从而定位问题所在。

Java 诊断工具 arthas-boot 安装步骤及常用命令_第4张图片

2.5 redefine(在线修改class)

它支持在线重新加载某个class文件,这样就避免了需要项目重启带来的风险!

在生产环境中,不可以随意停止程序。当生产环境出现了某些低级错误(比如某个变量名字写错成其他变量,或数值由0改成了1)时,可以通过redefine 命令来在线修改class文件,从而临时解决掉这个低级错误。但这种解决方式是在内存层面上修改了class文件,等到项目重新启动时就会丢失更新。

因此,等到下次部署项目前,再在原项目中修改掉这个bug即可。

2.6 trace 命令

trace 包名 方法名

作用是:在方法调用链中,追踪某个方法A的运行时长。

它会显示方法A的调用情况,比如显示调用了方法B——耗时10ms,调用了方法C——耗时2000ms,在这个例子中,方法C很可能就是有问题的方法,因为它的调用时间太长了。

Java 诊断工具 arthas-boot 安装步骤及常用命令_第5张图片

你可能感兴趣的:(java,开发语言)