Java问题排查工具Arthas入门教程
什么是阿里Arthas?
在生产环境经常遇到大量的日志,同时还有一些性能问题,需要进行进程分析,排查,有时候确实比较花时间,所以可以借助一些开源的框架来实现,Arthas,是阿里开源的一款Java诊断工具,可以实时查看应用 load、内存、gc、线程的状态信息,遇到接口异常,可以在不修改代码的情况,分析业务代码问题,查看方法调用的出入参、异常,监测方法执行耗时,类加载信息,提升线上问题排查效率。
GitHub地址:https://github.com/alibaba/arthas
码云地址:http://arthas.gitee.io/
Arthas的作用
可以查看官网的文档,链接:https://arthas.gitee.io/doc/,图来自官方文档:
环境准备
在安装之前先确保有安装好jdk,如果没安装,先简单安装一下jdk,注意jdk必须jdk6+,官网也有说明
Oracle官网下载jdk8:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
ps:可以使用xftp在本地下载jdk,或者使用命令curl -O url下载
- 解压文件
tar -zxvf jdk-8u261-linux-i586.tar.gz
- 设置环境变量
设置环境变量vi编辑 vi /etc/profile profile文件加入如下配置,如何按esc退出,:wq!保存
export JAVA_HOME=/usr/java/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib
- 让修改生效
source /etc/profile
- 验证jdk有效性
java -version
Arthas的安装过程
参考官网对Arthas进行安装,发现有遇到一些问题,处理好之后,做一下分享:
先将对应的arthas程序下载到本地,可以使用wget
命令,也可以使用官网介绍的curl
访问对应链接
wget https://arthas.aliyun.com/arthas-boot.jar
然后安装文档,启动对应的jar
java -jar arthas-boot.jar --repo-mirror aliyun --use-http
发现启动时候报错了,报错如下所示:
Can not find java process. Try to run `jps` command lists the instrumented Java HotSpot VMs on the target system.
Please select an available pid.
如图所示:
原因是因为要加上对应的线程id,但是我们没有运行对应的Java程序,所以可以去官网下载一个Java程序的例子math-game.jar
然后先java -jar math-game.jar
,运行对应的Java程序
查看运行的Java程序:
ps -aux|grep java
可以找到math-game.jar
对应的pid是2266,所以现在再执行
java -jar /usr/local/arthas/arthas-boot.jar 2266
可以看到进到对应的进程里,输入命令dashboard
,查看实时数据面板
- ID:Java级别的线程ID
- NAME:线程名
- GROUP:线程组名
- PRIORITY:线程优先级, 1~10之间的数字,越大表示优先级越高
- STATE:线程的状态
- CPU%:线程消耗的cpu占比
- TIME:线程运行总时间,数据格式为分:秒
- INTERRUPTED:线程当前的中断位状态
- DAEMON:是否是daemon线程