java线上问题定位神器 Arthas入门
Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具,深受开发者喜爱。
当你遇到以下类似问题而束手无策时,Arthas 可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
Arthas 采用命令行交互模式,同时提供丰富的
Tab
自动补全功能,进一步方便进行问题的定位和诊断。
阿里已经在github开源:https://github.com/alibaba/arthas
-
Arthas安装启动
在服务器下载
arthas-boot.jar
,然后用java -jar
的方式启动:curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar
启动的时候会检测当前运行的java服务id列表,选择需要检测的id后回车即可
image-20201211135027562
-
查看dashboard,输入dashboard回车,可以展示仓前进程的信息,按
ctrl+c
可以中断执行。dashboard
image-20201211140610688
-
通过jad可以用来反编译项目中的类或者方法名
jad com.xxx.xxx.Application
image-20201211141151436jad com.xxx.xxx.Application run
image-20201211141537955 -
退出arthas
如果只是退出当前的连接,可以用
quit
或者exit
命令。Attach到目标进程上的arthas还会继续运行,端口会保持开放,下次连接时可以直接连接上。如果想完全退出arthas,可以执行
stop
命令。