Arthas(阿尔萨斯)是阿里巴巴中间件开源的一款Java诊断工具,开始在淘宝内部孵 化使用,后来成为阿里Java项目必须使用的内部工具。2018年arthas成为阿里开源项 目,代码托管在GitHub上,star数高达23.3k,深受Java开发者的喜爱
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 5.是否有一个全局视角来查看系统的运行状况? 6.有什么办法可以监控到JVM的实时运行状态? 7.怎么快速定位应用的热点,生成火焰图? Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方 便进行问题的定位和诊断。
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命令。
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快捷键列表及自定义快捷键
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
