第一步:首先是安装,说白了其实把他当成一个工具来用就行了,你什么服务需要在线进行性能情况的一个监测和性能的瓶颈排查。首先下载一个他的jar包,下面是jar包的地址:
https://arthas.aliyun.com/arthas-boot.jar
第二步:把jar包上传到你需要进行java性能监测的服务器上。
第三步:启动 arthas-boot.jar ,启动的时候要注意 :你需要监测的java是启动的可以用jps -l 命令查看你的java服务。启动执行的命令如下:
- [root@localhost script]# java -jar arthas-boot.jar --启动命令
- [INFO] arthas-boot version: 3.6.3
- [INFO] Found existing java process, please choose one and input the serial number of the process, eg : 1. Then hit ENTER.
- * [1]: 9097 -- process information unavailable
- [2]: 23515 psf-datalake-metadata-0.0.1-SNAPSHOT.jar
- [3]: 8683 psf-datalake-share-0.0.1-SNAPSHOT.jar
- 2 --选择你要监测的java服务 回车
- [INFO] arthas home: /root/.arthas/lib/3.6.2/arthas
- [INFO] Try to attach process 23515
- [INFO] Attach process 23515 success.
- [INFO] arthas-client connect 127.0.0.1 3658
- ,---. ,------. ,--------.,--. ,--. ,---. ,---.
- / O \ | .--. ''--. .--'| '--' | / O \ ' .-'
- | .-. || '--'.' | | | .--. || .-. |`. `-.
- | | | || |\ \ | | | | | || | | |.-' |
- `--' `--'`--' '--' `--' `--' `--'`--' `--'`-----'
-
- wiki https://arthas.aliyun.com/doc
- tutorials https://arthas.aliyun.com/doc/arthas-tutorials.html
- version 3.6.2
- main_class
- pid 23515
- time 2022-08-02 08:28:33
-
- [arthas@23515]$ --表示启动成功可以输入命令进行查看
以上就是启动服务了 下面开始介绍常用的一些排查命令
1.dashboard命令
查看的是java服务在cpu/内存/gc运行的一个情况,ctrl+c可以退出监控程序
数据说明:
属性 | 描述 |
---|---|
ID | Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应 |
NAME | 线程名 |
GROUP | 线程组名 |
PRIORITY | 线程优先级, 1~10之间的数字,越大表示优先级越高 |
STATE | 线程的状态 |
CPU | 线程的cpu使用率。比如采样间隔1000ms,某个线程的增量cpu时间为100ms,则cpu使用率=100/1000=10% |
DELTA_TIME | 上次采样之后线程运行增量CPU时间,数据格式为秒 |
TIME | 线程运行总CPU时间,数据格式为分:秒 |
INTERRUPTED | 线程当前的中断位状态 |
DAEMON | 是否是daemon线程 |
2.thread命令
查看当前线程信息,查看线程的堆栈
参数说明:
参数名称 | 参数说明 |
---|---|
id | 线程id |
-n 前N个 | 指定最忙的前N个线程并打印堆栈 |
b | 找出当前阻塞其他线程的线程 |
i 200 | 指定cpu使用率统计的采样间隔,单位为毫秒,默认值为200 |
--all | 显示所有匹配的线程 |
2.1 thread 29
根据id查看更加详细信息
2.2 thread -n 3
打印出最忙的前3个线程堆栈
3.trace 命令
获取方法内部调用路径,并且输出每个执行节点的执行时间,方便排查执行慢的方法和类。
参数说明:
参数名称 | 参数说明 |
---|---|
class-pattern | 类名表达式匹配 |
method-pattern | 方法名表达式匹配 |
condition-express | 条件表达式 |
执行命令 trace demo.MathGame *
线上正式环境把他当成一个排查慢问题的工具还是很好用的。