简介
是一款java的诊断工具
当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
- 怎么快速定位应用的热点,生成火焰图?
归纳总结:Arthas通过JVM的Attach机制,在不影响服务连续性的情况下,实时连接到目标进程,便于工程师在线排查问题
下载启动
arthas是以jar的形式存在的,推荐用两种方式下载
- 全量下载:https://arthas.aliyun.com/download/latest_version?mirror=aliyun,解压即可
- 下载arthas-boot.jar,然后用java -jar的方式启动
curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar(或者使用镜像,java -jar arthas-boot.jar --repo-mirror aliyun --use-http)
(推荐)
第二种方式是在启动arthas的过程中,自动下载最新版的其他jar包。下载后的目录结构如下
启动(启动arthas的用户权限需要和目标进程权限保持一致)之后,选择应用java进程
$ $ java -jar arthas-boot.jar
* [1]: 35542
[2]: 71560 arthas-demo.jar
输入2,再输入回车/enter。Arthas会attach到目标进程上,并输出日志:
[INFO] Try to attach process 71560
[INFO] Attach process 71560 success.
[INFO] arthas-client connect 127.0.0.1 3658
,---. ,------. ,--------.,--. ,--. ,---. ,---.
/ O \ | .--. ''--. .--'| '--' | / O \ ' .-'
| .-. || '--'.' | | | .--. || .-. |`. `-.
| | | || |\ \ | |