Arthas(阿尔萨斯)Alibaba开源Java诊断工具

60 阅读3分钟
  • 大家好,我是全栈哒哒,活跃在一线城市的技术江湖。
  • 个人网站👉itzd.cn
  • 与我联系👉关注公众号回复“二维码”即可添加我为好友
  • 欢迎来到本期栏目,带你探索我日常生活中发现的热点与技术。
  • 如果你觉得本文有启发或帮助,别忘了点赞、评论、转发,给我点支持与鼓励!

image.png

1. Windows安装(Linux也一样)

  1. 新建个目录
## 进入D盘
D:

## 创建文件夹并进入
mkdir Arthas && cd Arthas
  1. 下载地址
curl -0 https://alibaba.github.io/arthas/arthas-boot.jar --output arthas-boot.jar
  1. 启动前要启动其他的Java服务,也就是需要监测的Java服务,arthas的服务要与其他Java服务用的同一个jdk才可以监控到
java -jar arthas-boot.jar

在这里插入图片描述

  1. 输入想要检测的服务序号敲回车,会下载一些jar包,也可以预先下载好,放到任意位置即可 在这里插入图片描述

  2. 首次启动会下载jar包 在这里插入图片描述

  3. 进入后,可以根据相关指令查看接口情况

2. 卸载Arthas

2.1. Win卸载(两个文件删除)

在这里插入图片描述 在这里插入图片描述

2.2. Linux卸载

rm -rf ~/arthas/
rm -rf -/logs/arthas

3. 快速入门(以win版本为例)

3.1.下载Arthas自写案例

  1. 下载地址:
curl -0 https://alibaba.github.io/arthas/arthas-demo.jar --output arthas-demo.jar
  1. 运行demo文件
java -jar arthas-demo.jar

3.2. 启动玩,在一个新窗口启动Arthas,进行测试看结果

  1. 启动Arthas
java -jar arthas-boot.jar
  1. 使用Arthas粘附一个程序,选择好后敲回车 在这里插入图片描述
  2. 可能会提示我们黏附失败,是因为端口可能会冲突,更改成以下方式启动
 java -jar arthas-boot.jar --telnet-port 9998 --http-port -1

在这里插入图片描述

  1. 还可以通过浏览器进行访问http://localhost:3658/,默认情况只能在127.0.0.1下进行访问,如果想从远程连接,则可以使用--target-ip参数指定监听的ip 在这里插入图片描述

4. 常用命令

  • dashboard仪表盘
  • 通过thread命令来获取arthas -demo进程的main class
  • 通过jad来反编译Main Class
  • watch

4.1. dashboard仪表盘(按Tab键可以自动补全)

在这里插入图片描述

4.2. thread(按Tab键可以自动补全)

在这里插入图片描述

4.3.Jad反编译

  1. 格式jad 包名.类名
jad demo.MathGame

在这里插入图片描述

4.4.watch监视

  1. 通过watch命令来查看返回值的数据,也就是实时查看,类似debug
  • demo.MathGame:包名.类名
  • primeFactors :方法名
  • returnObj:返回值
watch demo.MathGame primeFactors returnObj

在这里插入图片描述

4.5.退出Arthas

  1. exit 或者 quit都可以,不过这两种退出之后,端口还是黏贴上的,如果想要彻底退出的话,需要使用stop命令。

4.6. 总结

命令功能
dashboard显示JVM中内存的情况,JVM中环境信息
thread显示当前进度所有现成信息
jad反编译指定的类或方法
watch监视某个方法的执行情况,监视了返回值
quit,exit,stop退出或停止

5. 基础命令

5.1.help命令--帮助

  • 查看帮助命令,效果如下 在这里插入图片描述

5.2.cat命令--查看文件

  • 查看文件,与linux命令一样

5.3.grep命令--过滤作用

sysprop命令,显示系统Java虚拟机,arthas当中的命令,单独使用sysproop

  • 通过grep进行过Java的进程服务
## 查询Java进程
sysprop | grep java 
## 带序号
sysprop | grep java -n
## 带序号前十个
sysprop | grep java -n -10
## 只要前十个
sysprop | grep java -m10
## 正则表达式
thread | grep -e "\d{1,2}"

5.4.pwd命令--当前所谓目录位置

5.5.cls命令--清屏--对应Linux的clear

  • 大家好,我是全栈哒哒,活跃在一线城市的技术江湖。
  • 个人网站👉itzd.cn
  • 与我联系👉关注公众号回复“二维码”即可添加我为好友
  • 欢迎来到本期栏目,带你探索我日常生活中发现的热点与技术。
  • 如果你觉得本文有启发或帮助,别忘了点赞、评论、转发,给我点支持与鼓励!

image.png