arthas常用命令(四)-- thread

thread命令

参数说明

参数名称参数说明
id线程 id
-n指定最忙的前 N 个线程并打印堆栈
-b找出当前阻塞其他线程的线程
-i指定 cpu 使用率统计的采样间隔,单位为毫秒,默认值为 200
–all显示所有匹配的线程

线程状态:

NEW: 新建, RUNNABLE: 运行中, BLOCKED: 阻塞,
WAITING: 等待, TIMED_WAITING: 105, TERMINATED: 终止。
TIMED_WAITING(超时等待):该状态不同于WAITING,它可以在指定的时间后自行返回。

thread 常用的命令

输入thread,双击 tab,可以看到 thread 相关的所有命令。

显示第一页的线程:

thread

thread 没有参数时,默认按照 CPU 增量时间(DELTA_TIME)降序排列,只显示第一页数据。

结果如下:

ID:线程id。
NAME:线程名称。
STATE:线程状态。
%CPU:CPU占比。
DELTA_TIME:采样间隔时间内线程的增量 CPU 时间

显示所有的线程

thread -all

结果如下:

查找 CPU占用最高的前 n 个线程,并打印堆栈

thread -n 5

CPU 100%时,可以通过arthas的这个命令,来排查是哪些线程对应的代码导致的问题。

通过这个命令,可以找出CPU占用最高的几个线程。

结果如下:

结果的含义如下:

Id:线程 ID。如果没有线程 ID,包含`[Internal]`的表示为 JVM 内部线程。
cpuUsage为采样间隔时间内线程的 CPU 使用率。
deltaTime为采样间隔时间内线程的增量 CPU 时间,小于 1ms 时被取整显示为 0ms。
time:线程运行总 CPU 时间。

指定线程id,打印堆栈

thread 74

找出CPU占用最高的线程后,可以通过线程id,打印堆栈。

找出当前阻塞其他线程的线程:

通过这个命令,可以检测出是否死锁。

thread -b

指定采样时间间隔

thread -i 1000 : 统计最近 1000ms 内的线程 CPU 时间。

thread -n 3 -i 1000 : 列出 1000ms 内最忙的 3 个线程栈

查看指定状态的线程:

示例:展示等待状态的线程。

thread --state WAITING

结果如下:

Total表示总数 。

参考资料:

https://arthas.gitee.io/doc/thread.html
https://www.cnblogs.com/spareyaya/p/13177513.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值