arthas是阿里巴巴开源的Java诊断工具,基本使用场景是定位复现一些生产环境比较难以定位问题。可以在线排查问题,以及动态追踪Java代码,实时监控JVM状态等等,官网地址:https://arthas.aliyun.com/doc/。
某个类从那个jar包加载的?为什么会报各种类的异常? (可以通过命令拿到指定类的加载路径和异常信息)
改的代码没有执行到?是没有commit还是分支搞错还是怎么样?(可以通过反编译拿到类的代码信息)
遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?(可以通过jdk 1.5的instrument来进行代码的动态替换)
线上遇到某个用户的数据处理有问题,但线上同样无法debug,线下无法重现!(arthas中可以看到很详细的jvm状态以及一些比较方便的工具,比如反编译,在线调试等)
是否有一个全局视角来查看系统的运行状况?(dashboard命令查看jvm的详细信息)
怎么快速定位应用的热点,生成火焰图?
怎样直接从JVM内查找某个类的实例?
https://github.com/alibaba/arthas/releases
wget https://arthas.aliyun.com/arthas-demo.jarjava -jar arthas-demo.jar
解压后,在文件夹里有as.sh,直接用./as.sh的方式启动:
./as.sh
打印帮助信息:
./as.sh -h
或者在解压后,在文件夹里有arthas-boot.jar,直接用java -jar的方式启动:
java -jar arthas-boot.jar
打印帮助信息:
java -jar arthas-boot.jar -h
安装过程:
1、下载arthas全量包、安装
https://github.com/alibaba/arthas/releases/download/arthas-all-3.6.4/arthas-bin.zip
如果下载到本地的文件服务器,可以直接下载、解压 (容器控制台中,也可以直接下载使用)
wget http://172.20.56.117/jdk/arthas/3.6.4/arthas-bin.zip &&unzip arthas-bin.zip(unzip -d arthas arthas-bin.zip )
解压后,运行如下命令进行安装
[root@nccztsjb-node-19 ~]# ./install-local.sh install to local succeeded.
OK,到此arthas工具安装完成。
Java -jar arthas-boot.jar
如果有报错,这个错是用户要选择进程的用户
当在本地启动时,可以访问 http://127.0.0.1:8563/ ,通过浏览器来使用 Arthas。
输入 help 可以看到常用的帮助命令:
arthas-boot.jar 支持很多参数,可以执行 java -jar arthas-boot.jar -h 查看
数据说明:
thread 1 打印线程 ID 1 的栈
Arthas 支持管道命令,可以利用 thread 1|grep 'main(' 查找 main class
查看 CPU 使用率 top n 的线程的栈,当前最忙的前 n 个线程:
Copythread -n 3
查看 5 秒内的 CPU 使用率 top n 的线程栈:
Copythread -n 3 -i 5000
-i 指定 CPU 占比统计的采样间隔,单位为毫秒
查看线程是否有阻塞:
Copythread -b
有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题,此时使用 -b 参数,找到罪魁祸首。
注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持
下一节后面详细介绍这个arthas的命令
页面更新:2024-04-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号