Java诊断工具Arthas
Java诊断工具Arthas
1. Arthas简介
Arthas是阿里开源的一个线上java诊断工具,发现阿里还是挺喜欢开源一些技术的,造福人类。昨天试用了一下,发现真是强大,解决了我工作两年的很多困扰,有点相见恨晚的感觉。
根据官网的说明,它能解决下面的问题:
当你遇到以下类似问题而束手无策时,
Arthas
可以帮助你解决:
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到JVM的实时运行状态?
Arthas
采用命令行交互模式,同时提供丰富的Tab
自动补全功能,进一步方便进行问题的定位和诊断。
2. Arthas安装
在Linux下直接执行curl -L https://alibaba.github.io/arthas/install.sh | sh
,然后执行./as.sh
就可以进入到Arthas的命令行界面。
3. Arthas试用
安装完后试用了它的监控相关的功能,以后调试就不那么麻烦了。
3.1 monitor命令
monitor可以对某个类的某个方法进行周期性监控,来输出方法的平均响应时间,成功失败次数,调用次数等。具体使用请见:https://alibaba.github.io/art...。
3.2 watch命令
watch可以监控某个方法的出入参,异常信息等,具体使用请见:https://alibaba.github.io/art...。
3.3 trace命令
trace可以输出方法内部调用关系,并打印方法内部每个调用的耗时,具体使用请见:https://alibaba.github.io/art...。
3.4 stack命令
stack可以输出方法的整个调用路径,具体使用请见:https://alibaba.github.io/art...。
3.5 tt命令
记录方法每次的调用出入参和异常信息,并且完整保留调用现场,可以再次模拟调用。具体使用请见:https://alibaba.github.io/art...。
当然除此之外还有很丰富的其他功能,比如JVM,ClassLoader相关的命令。