Arthas
什么是Arthas?
Arthas(阿尔萨斯)是阿里巴巴中间件开源的一款Java诊断工具,开始在淘宝内部孵化使用,后来成为阿里Java项目必须使用的内部工具。2018年arthas成为阿里开源项目,代码托管在GitHub上,star数高达23.3k,深受Java开发者的喜爱
Arthas基于Greys进行二次开发,主要利用Java6开始提供的instrumentation特性,动态增强你所指定的类,获取你想要得到的信息,采用命令行交互模式,同时提供tab自动补全功能,无需重启;动态跟踪Java代码;实现监控jvm状态。
原理:进程间通讯的方式,启动客户端attach到目标进程的虚拟机上,然后远程执行一些操作。很多方法都是通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此在线上、预发使用时,需要尽量明确需要观测的类、方法以及条件,诊断结束后要执行stop获或者将增强过的类执行reset命令。
为什么需要Arthas?
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
是否有一个全局视角来查看系统的运行状况?
有什么办法可以监控到JVM的实时运行状态?
怎么快速定位应用的热点,生成火焰图?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。
优点:
定位问题减少重新编译代码、重启服务
动态监控Java进程
0代码侵入
灵活、可插拔
安装
参考:https://arthas.aliyun.com/doc/install-detail.html
1、jdk安装配置
2、解压arthas-3.x.x-bin.zip即可使用
3、java -jar arthas-boot.jar
卸载
在 Linux/Unix/Mac 平台
删除下面文件:
rm -rf ~/.arthas/
rm -rf ~/logs/arthas
Windows平台直接删除user home下面的.arthas和logs/arthas目录
启动
java -jar arthas-boot.jar
在命令行执行(使用与目标进程一致的用户启动,否则可能attach失败)
退出
如果只是退出当前的连接,可以直接quit或者exit退出。attach到目标进程的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。如果想完全退出,请执行stop命令。
基础命令
help——查看命令帮助信息
cls——清空当前屏幕区域
session——查看当前会话的信息
reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
version——输出当前目标 Java 进程所加载的 Arthas 版本号
history——打印命令历史
quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
stop——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
keymap——Arthas快捷键列表及自定义快捷键
JVM相关命令
dashboard--当前系统的实时数据面板
thread--查看当前JVM线程堆栈信息
jvm--查看当前jvm的信息
sysprop--查看和修改JVM的系统属性
sysenv--查看JVM的环境变量
getstatic--查看类的静态属性
ognl--查看ognl表达式
mbean--查看MBean的信息
vmoption--查看JVM参数
观测相关命令
请注意,这些命令都是字节码增强技术实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此线上、预发使用时,需要尽量明确需要观测的类、方法以及条件,诊断结束后也要执行stop命令或者将增强过的类执行reset命令
monitor--方法执行监控
watch--方法执行数据观测
trace--方法内部调用路径,并输出方法路径上的每个节点上耗时
stack--输出当前方法被调用的调用路径
tt--方法执行数据的时空隧道,记录下指定方法每次调用的入参、出参,并能对这些不同时间下的调用进行观测
GitHub地址:https://github.com/alibaba/arthas/wiki
用户手册:https://arthas.aliyun.com/doc/quick-start.html
思维导图:https://user-images.githubusercontent.com/1683936/71873638-a697b800-315a-11ea-9862-fbfa8e470064.png