阿里 Arthas 3.5.0入门 jvm监控测试操作
阿里文档地址
https://arthas.aliyun.com/doc/web-console.html
一、demo:用来测试的java程序(jvm)
curl -O https://arthas.aliyun.com/math-game.jar
java -jar math-game.jar
math-game
是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。
正文:
第一步:启动程序
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
-
执行该程序的用户需要和目标进程具有相同的权限。比如以
admin
用户来执行:sudo su admin && java -jar arthas-boot.jar
或sudo -u admin -EH java -jar arthas-boot.jar
。 -
如果attach不上目标进程,可以查看
~/logs/arthas/
目录下的日志。 -
如果下载速度比较慢,可以使用aliyun的镜像:
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
-
java -jar arthas-boot.jar -h
打印更多参数信息
第二步:选择java进程
$ $ java -jar arthas-boot.jar * [1]: 35542 [2]: 71560 math-game.jar math-game进程是第2个,则输入2,再输入回车/enter。Arthas会attach到目标进程上,并输出日志:
第三步: 查看dashboard
输入dashboard,按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。
第四步:通过thread命令来获取到math-game
进程的Main Class
thread 1会打印线程ID 1的栈,通常是main函数的线程。 $ thread 1 | grep 'main(' at demo.MathGame.main(MathGame.java:17)
二、反编译文档
demo. 通过jad来反编译Main Class
命令:jad demo.MathGame
退出arthas
如果只是退出当前的连接,可以用quit
或者exit
命令。Attach到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。
如果想完全退出arthas,可以执行stop
命令。
春有百花秋有月,夏有凉风冬有雪!