Arthas的安装与使用

时间:2024-03-30 12:08:29

 

什么是Arthas

Arthas(阿尔萨斯)是阿里巴巴中间件开源的一款Java诊断工具,开始在淘宝内部孵
化使用,后来成为阿里Java项目必须使用的内部工具。2018年arthas成为阿里开源项
目,代码托管在GitHub上,star数高达23.3k,深受Java开发者的喜爱

为什么需要Arthas


当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
5.是否有一个全局视角来查看系统的运行状况?
6.有什么办法可以监控到JVM的实时运行状态?
7.怎么快速定位应用的热点,生成火焰图?
Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方
便进行问题的定位和诊断。

 

什么是Arthas


Arthas基于Greys进行二次开发,主要利用Java6开始提供的instrumentation特性,动态
增强你所指定的类,获取你想要得到的信息,采用命令行交互模式,同时提供tab自
动补全功能,无需重启;动态跟踪Java代码;实现监控jvm状态。
原理:进程间通讯的方式,启动客户端attach到目标进程的虚拟机上,然后远程执行
一些操作。很多方法都是通过字节码增强技术来实现的,会在指定类的方法中插入一
些切面来实现数据统计和观测,因此在线上、预发使用时,需要尽量明确需要观测的
类、方法以及条件,诊断结束后要执行stop获或者将增强过的类执行reset命令。

 

 

安装


参考: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命令。

 

IDEA插件安装

Arthas的安装与使用

 

基础命令


1.help——查看命令帮助信息
2.cls——清空当前屏幕区域
3.session——查看当前会话的信息
4.reset——重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端关闭时会重置所有增强过的类
5.version——输出当前目标 Java 进程所加载的 Arthas 版本号
6.history——打印命令历史
7.quit——退出当前 Arthas 客户端,其他 Arthas 客户端不受影响
8.stop——关闭 Arthas 服务端,所有 Arthas 客户端全部退出
9.keymap——Arthas快捷键列表及自定义快捷键

 

JVM相关命令


1.dashboard--当前系统的实时数据面板
2.thread--查看当前JVM线程堆栈信息
3.jvm--查看当前jvm的信息
4.sysprop--查看和修改JVM的系统属性
5.sysenv--查看JVM的环境变量
6.getstatic--查看类的静态属性
7.ognl--查看ognl表达式
8.mbean--查看MBean的信息
9.vmoption--查看JVM参数

 

观测相关命令


请注意,这些命令都是字节码增强技术实现的,会在指定类的方法中插入一些切面来实现数据统
计和观测,因此线上、预发使用时,需要尽量明确需要观测的类、方法以及条件,诊断结束后也要执
行stop命令或者将增强过的类执行reset命令
1.monitor--方法执行监控
2.watch--方法执行数据观测
3.trace--方法内部调用路径,并输出方法路径上的每个节点上耗时
4.stack--输出当前方法被调用的调用路径
5.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