Arthas(阿尔萨斯)使用
1、背景
当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,可使用top,查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof ,这里主要介绍Arthas(阿尔萨斯)。
2、Arthas 介绍
Arthas 是Alibaba开源的Java诊断工具。安装在系统所在服务器。可以帮助开发人员或者运维人员查找问题,分析性能,bug追踪。
开源地址:https://github.com/alibaba/arthas
官方文档:https://alibaba.github.io/arthas
3、Arthas 使用场景
得益于 Arthas 强大且丰富的功能,让 Arthas 能做的事情超乎想象。下面仅仅列举几项常见的使用情况,更多的使用场景可以在熟悉了 Arthas 之后自行探索。
- 是否有一个全局视角来查看系统的运行状况?
- 有什么办法可以监控到 JVM 的实时运行状态?
- 为什么 CPU 又升高了,到底是哪里占用了 CPU ?
- 运行的多线程有死锁吗?有阻塞吗?
- 程序运行耗时很长,是哪里耗时比较长呢?如何监测呢?
- 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?
- 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?
- 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
- 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现?
4、 Arthas 如何使用
4.1 安装
安装的方式有好几种:
- 直接下载一个可以启动的jar包然后用java -jar的方式启动
- 用官方提供的as.sh脚本一键安装
- 用rpm的方式安装
本篇介绍第一种方式,因为它简单而且想迁移的时候也超级方便(毕竟只需要把下载的jar包拷贝走就行了)。
可以在官方 Github 上进行下载,有时打不开。
curl -O https://alibaba.github.io/arthas/arthas-boot.jar
如果速度较慢,可以尝试国内的码云 Gitee 下载。
curl -O https://arthas.gitee.io/arthas-boot.jar
本文介绍在windows环境下如何使用arthas,linux下大同小异。
在浏览器中直接输入https://arthas.gitee.io/arthas-boot.jar,下载arthas-boot.jar包。
4.2 demo
本地运行程序,我这里随便写了一个查询人名的demo,同时启动一个线程,运行程序。