摘自Arthas的Github介绍:
Arthas is a Java Diagnostic tool open sourced by Alibaba. Arthas allows developers to troubleshoot production issues for Java applications without modifying code or restarting servers.
大意为:Arthas是阿里开源的一个Java诊断工具,可以帮助开发人员在不修改代码或重启服务器的情况下快速定位线上问题。
听起来确实是我们的程序员的一大福利。比如,我们就遇到一种情况,Spring Boot应用中有个cron定时任务为每天凌晨1点启动执行,但是测试起来很不方便,总不能每次修改cron时间来让QC测试吧?这样虽然是方便了测试妹子,但是却徒增了我们开发时间和迭代次数啊!!!那Arthas到底是否能够满足我们需求呢?Go on...
wget https://alibaba.github.io/arthas/arthas-boot.jar 复制代码
此时在你当前所在目录下会有个 arthas-boot.jar
包。
尝试下arthas:
# 启动arthas,会进入命令行交互状态 java -jar arthas-boot.jar # 查看arthas命令手册 java -jar arthas-boot.jar -h 复制代码
# 该命令会下载 as.sh 到当前目录下 curl -L https://alibaba.github.io/arthas/install.sh | sh 复制代码
尝试下arthas:
# 启动arthas,会进入命令行交互状态 ./as.sh # 查看arthas命令手册 ./as.sh -h 复制代码
下面演示我们以 as.sh
为主。
首先我们启动arthas,会查看到我们当前server上部署的应用已经被探测到,当前我的server上只有一个应用程序,只需输入数字1,即可和该应用进行交互:
dashboard
命令可以实时查看应用监控数据 thread
命令查看应用程序中所有线程情况 其中第一列为线程的ID。
通过 thread threadId
命令查看指定线程状态信息
通过 watch
命令去查看方法的参数、返回值和异常信息
通过 sc
命令查看类的信息
sc yourFullClassName
sc -d yourFullClassName*
去查看JVM加载的类信息 sc *yourClassName*
去查看JVM加载的类信息 通过 sm
命令查看类的方法信息
sm java.math.RoundingMode
sm -d java.math.RoundingMode
sm java.math.RoundingMode <init>