【星课堂】JAVA 工程师的线上诊断神器推荐——Arthas

发布者:星河Salaxy
发布于:2022-04-07 19:35

运营JAVA项目的你是否经历过以下情况?


——程序能稳定运营,功能却没有响应。


——已经修复的Bug,在新版本上线后Bug依然存在,根本不知道问题出现在哪里?


——程序稳定运营且功能完备,但跑了一段时间后,发现响应速度变慢了。



碰到这些问题,一般的解决方式都是修改代码、重新上线。但对于大企业,上线流程非常繁琐,如果只是为了多加一行日志而重新发布版本,想想就很折磨。

编辑

添加图片注释,不超过 140 字(可选)

今天给大家推荐一款开源的JAVA诊断工具——Arthas。


Arthas 是Alibaba公司研发的开源的JAVA诊断工具,采用了命令行交互的方式,进行排查JVM 相关问题的利器。自从开源以来,深受JAVA开发工程师的喜爱。



Arthas在github上的欢迎程度:

编辑切换为居中

添加图片注释,不超过 140 字(可选)


Arthas能做哪些事情?

(1) 能够提供性能看板,包括线程、cpu、内存等信息,并且会定时的刷新

(2) 根据各种条件查看线程快照。比如找出cpu占用率最高的n个线程

(3) 输出jvm的各种信息,如gc算法、jdk版本、ClassPath等

(4) 查看/设置sysprop和sysenv

(5) 查看某个类的静态属性,也可以通过ognl语法执行一些语句

(6) 查看已加载的类的详细信息,比如这个类从哪个jar包加载的。也可以查看类的方法的信息

(7) dump某个类的字节码到指定目录

(8) 反编译相关指定的类

(9) 查看类加载器的一些信息

(10) 可以让jvm重新加载某个类

(11) 监控方法的执行,同时能够获取到执行入参、出参以及抛出异常

(12) 追踪方法执行的调用栈和调用的时间


一、Arthas运行的工作原理

编辑切换为居中

添加图片注释,不超过 140 字(可选)

二、Arthas常用的命令列表

编辑切换为居中

添加图片注释,不超过 140 字(可选)

三、Arthas的具体使用和实践

安装:

Arthas在github的地址是https://alibaba.github.io/arthas/

安装arthas的方式有很多种:

1. 直接下载一个可以启动的jar包然后用java -jar的方式启动

2. 用官方提供的as.sh脚本一键安装

3. 用rpm的方式安装

这边建议使用第一种方式,因为它简单而且想迁移的时候也超级方便(毕竟只需要把下载的jar包拷贝走就行了)。

curl -O https://alibaba.github.io/arthas/arthas-boot.jar

如果下载速度太慢,可以用gitee上的源

curl -O https://arthas.gitee.io/arthas-boot.jar

curl命令直接把arthas-boot.jar下载到你想要的目录

[root@localhost ~]# ll -lrt

-rw-r--r--. 1 root root   138880 Jun 22 02:55 arthas-boot.jar

四、启动

用java命令直接启动

[root@localhost ~]# java -jar arthas-boot.jar --target-ip 10.45.105.248

[INFO] arthas-boot version: 3.3.3

[INFO] Can not find java process. Try to passin command line. Please select an available pid.

编辑切换为居中

添加图片注释,不超过 140 字(可选)

通过浏览器访问 http://10.45.105.248:8563/:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

通过dashboard命令可以查看当前线程数和jvm内存情况:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

通过watch 命令查看返回的结果

编辑切换为居中

添加图片注释,不超过 140 字(可选)


五、Arthas其它命令

Arthas还提供了很多用于监控的命令,比如监控执行时间,反编译线上的class文件,甚至在不重启java应用的情况下直接替换某个类。官方的使用文档已经写得太详细了,这里就不再一一介绍了,大家可以自己尝试。

参考:https://www.cnblogs.com/spareyaya/p/13177513.html

https://arthas.aliyun.com/doc/



声明:该文观点仅代表作者本人,转载请注明来自看雪