本地安装Arthas
1.安装地址:
2.环境变量是个坑
环境变量要跟springboot 一个jdk
select java
java -version
可以去查看java的版本是否和spring boot 是否是一个版本
3.启动
java -jar arthas-boot.jar
4.dashboard
dashboard 命令可以查看系统的实时数据面板。
q 或 ctrl+c 可以退出数据面展示。
sc 查看JVM已加载的类信息
sm 查看已加载类的方法信息
trace 定位方法内部代码块性能耗时情况
数据说明:
ID: Java级别的线程ID,注意这个ID不能跟jstack中的nativeID一一对应
NAME: 线程名
GROUP: 线程组名
PRIORITY: 线程优先级, 1~10之间的数字,越大表示优先级越高
STATE: 线程的状态
CPU%: 线程消耗的cpu占比,采样100ms,将所有线程在这100ms内的cpu使用量求和,再算出每个线程的cpu使用占比。
TIME: 线程运行总时间,数据格式为分:秒
INTERRUPTED: 线程当前的中断位状态
DAEMON: 是否是daemon线程
5.thread
thread 1 打印线程 ID 1 的栈
Arthas 支持管道命令,可以利用 thread 1|grep 'main(' 查找 main class 查看 CPU 使用率 top n 的线程的栈,当前最忙的前 n 个线程:
thread -n 3
查看 5 秒内的 CPU 使用率 top n 的线程栈:
thread -n 3 -i 5000
-i 指定 CPU 占比统计的采样间隔,单位为毫秒
查看线程是否有阻塞:
thread -b
有时候我们发现应用卡住了, 通常是由于某个线程拿住了某个锁, 并且其他线程都在等待这把锁造成的。 为了排查这类问题,此时使用 -b 参数,找到罪魁祸首。
注意, 目前只支持找出synchronized关键字阻塞住的线程, 如果是java.util.concurrent.Lock, 目前还不支持
就此为止,想查看更多的命令解释,请参见官方文档
alibaba.github.io/arthas/commands....
本作品采用《CC 协议》,转载必须注明作者和本文链接