Arthas是一个Java诊断工具,它允许开发者对运行中的Java应用进行监控和故障排查,而无需重启。它可以被用来监视JVM当前状态和执行的Java代码。
环境准备
- 确保JDK版本为8及以上。
- 确保所在环境能够访问外部下载地址或者已经下载好了Arthas工具。
安装Arthas
下载Arthas
前往Arthas的GitHub页面(https://github.com/alibaba/arthas)下载最新版本的Arthas,或者通过以下命令行直接下载:
curl -L https://arthas.aliyun.com/download/latest_version?mirror=aliyun -o arthas-boot.jar
启动Arthas
使用Java命令启动Arthas:
java -jar arthas-boot.jar
运行后,会显示当前系统中的Java进程列表,会显示你启动的java应用,比如我这里部署了2个
spring boot
应用分表是
api-service.jar
和wechat-official-accounts-1.0-SNAPSHOT.jar
:
[root@VM-8-6-centos arthas]# java -jar arthas-boot.jar
[INFO] JAVA_HOME: /usr/local/jdk1.8.0_261/jre
[INFO] arthas-boot version: 3.7.1
[INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
* [1]: 25331 /usr/local/java/jar/api-service/api-service.jar
[2]: 15862 wechat-official-accounts-1.0-SNAPSHOT.jar
控制台输入1,代表进入第一个应用,输入2代表进入第二个应用
基本命令和使用示例
dashboard
显示系统和JVM的实时数据面板。
dashboard
thread
查看当前JVM的线程信息。
thread
查看特定线程堆栈:
thread [线程ID]
jvm
显示JVM的详细信息。
jvm
sysprop
显示系统属性。
sysprop
查看特定的系统属性:
sysprop [属性名]
sysenv
显示系统环境变量。
sysenv
vmoption
查看或设置JVM的启动参数。
查看所有JVM启动参数:
vmoption
设置或更改JVM参数:
vmoption -Xms1g
watch
监控方法执行情况。
watch [类名] [方法名] "{params, target, returnObj}" -x 2
示例
watch com.example.service.UserService createUser "{params, target, returnObj}" -x 2
trace
追踪方法调用路径。
trace [类名] [方法名]
查找消耗性能的方法
profiler
使用
profiler
命令来进行CPU和内存分析。profiler start
运行一段时间后,使用以下命令查看结果:
profiler stop
这将生成一个html分析报告,展示消耗最多CPU或内存的方法。
monitor
监控方法的调用次数和执行时间。
monitor -c 5 [类名] [方法名]
这个命令会监控指定方法5秒钟,显示调用次数和总耗时,帮助定位性能瓶颈。
watch
使用
watch
命令来监控方法的具体执行情况。watch [类名] [方法名] "{'cost':(timestampMills-startTimeStampMills)}" -x 2
这个命令会监控指定方法的执行时间,有助于找出耗时长的方法。
总结
Arthas是一个功能强大的Java诊断工具,通过以上命令和示例,您可以有效地监控和诊断Java应用程序的性能问题。在使用这些高级功能时,请确保对Java和JVM有一定的了解,以便正确解读结果。