常见系统问题
# Linux服务器(Java应用)CPU100%,不借助可视化工具怎么定位问题?
# 基础方式
1.top 找出进程 CPU 比较高 PID
2.top -Hp PID 打印 该 PID 进程下哪条线程的 CPU 占用比较高 tid
3.printf "%x\n" tid 将该 id 进行 16 进制转换 tidhex
4.jstack PID |grep tidhex 打印线程的堆栈信息
# arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar
1
2
2
# thread -n 3, 最忙的前 N 个线程并打印堆栈
# thread --all, 显示所有匹配的线程
- 显示所有匹配线程信息,有时需要获取全部 JVM 的线程数据进行分析。
# thread id, 显示指定线程的运行堆栈
# thread -b, 找出当前阻塞其他线程的线程
# thread -i, 指定采样时间间隔
thread -i 1000
: 统计最近 1000ms 内的线程 CPU 时间。thread -n 3 -i 1000
: 列出 1000ms 内最忙的 3 个线程栈
# thread --state ,查看指定状态的线程
上次更新: 2023/08/30, 15:34:42