Arthas 是一款阿里推出的线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
Arthas我平常用的比较多的就是监测方法执行耗时,做性能调优,即使方法是循环调用的,也能统计出方法的调用次数与总耗时,关键是不用代码侵入,比stopwatch不要好用太多。
arthas使用也很简单,直接下载arthas-boot.jar就能用:
curl -O https://arthas.aliyun.com/arthas-boot.jar
然后启动arthas:
java -jar arthas-boot.jar
但是还要自己写arthas指令,常用指令有trace和watch指令,trace就是监测方法耗时,watch从字面上理解就是观察值的信息,可以查看入参、返回值、异常、可以执行表达式获取静态变量。
如果不想自己写指令这么麻烦毕竟指令又长又臭,可以安装arthas idea插件,直接在idea插件中搜索arthas 就能找到下载安装,或者这个地址下载插件:
https://www.yuque.com/arthas-idea-plugin/help/pe6i45
使用,在idea terminal上执行:
1.java -jar arthas-boot.jar
【失败的图片】
D:\spaceall\muse-feat\team-workflow-platform_v1.1>java -jar arthas-boot.jar
[INFO] JAVA_HOME: D:\programfiles\jdk17
[INFO] arthas-boot version: 3.6.9
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 17072
[2]: 13864 org.jetbrains.jps.cmdline.Launcher
[3]: 13880 com.neteasegame.cpd.gcp.twp.TeamWorkflowPlatformApplication
2.找到自己的本地工程的jvm,上图是3,输入2就好。
3.idea中在要监控的方法右键获取trace或watch指令(idea插件的功能)
就会自动生成指令如:
trace com.neteasegame.cpd.gcp.twp.service.impl.HandoverBusinessModuleServiceImpl update -n 5 --skipJDKMethod false
4.粘贴直接执行指令。
5.调用接口触发要监控的方法,就能看到各个方法的执行耗时:
【失败的图片】
多么的一目了然,哪个方法耗时多就可针对性地去优化。
6. Q 退出监控。
最后附上Arthas使用手册:
https://www.yuque.com/arthas-idea-plugin
https://www.yuque.com/arthas-idea-plugin/help/pe6i45