JVM监控之arthas

时间:2024-05-20 18:33:47

用了arthas之后,才发现世界上竟有如此美妙的jar包

 arthas,中文叫阿尔萨斯,是魔兽世界里的一个Boss吧。这是阿里巴巴开发的java监控的jar。如果你熟悉jdk内置工具的话,肯定对此等功能不陌生,但arthas也有它自己的特色。

1、下载并使用

arthas的使用方法之一是下载它的arthas-boot.jar,https://alibaba.github.io/arthas/arthas-boot.j

然后java -jar arthas-boot.jar即可。

JVM监控之arthas

你要监控哪个进程就填几,我这里监控1,,然后回车到了控制台

JVM监控之arthas

进去先输入help,查看下帮助命令,可以看到有很多,我们选择主要的说明:

1.dashboard,可以查看简单的堆栈快照,每5秒钟一刷

JVM监控之arthas

很明显可以看到最上面的是thread区,中间的是堆,下面的虚拟机版本

ctrl +C 可以取消查看

2.thread

我们可以看到dashbroad里的thread区第一列有编号,那么你就可以

thread 编号

来查看其栈。这里查看thread 1

 JVM监控之arthas

thread -n 3 可以查看使用cpu前三的线程

3.jad 反编译

我们看到里面有个lamdaTest这个类,然后我们

jad com.bai,test.lambda.LamdaTest 

JVM监控之arthas

果然反编译了,查看代码可以得知,里面每秒调用一次aaa,aaa会根据随机int返回%2的值。

4.watch 监控方法,比如

watch com.bai,test.lambda.LamdaTest aaa params

结果是:

JVM监控之arthas

可以看到每秒执行一次,每次传入的参数都不一样,分别是49.63,82,19等

注意watch函数的最后一个参数不仅可以填params,还可以监控返回值,这个是要Tab提示或者使用help就了解了。

private函数也能监控哎

5.ognl表达式

对于arthas来说,ognl非常重要,因为他能够执行。

使用命令,ognl @[email protected](100)

JVM监控之arthas

结果程序真的执行了aaa这个方法,且参数是100,返回值是0