如何定位是哪个服务过程导致 CPU 过载,哪个线程导致 CPU 过载,哪段代码导致 CPU 过载 .
找出零碎中占用 CPU 最高的线程 PID
- -c 显示服务残缺的门路和名称
> top -c
- 不要退出 top, 间接输出 P(必须大写), 让 CPU 利用率从大到小排列
比方找到的过程 ID 是
1584
找到最耗 CPU 的线程
一个过程上面个别会有很多的线程, 每个线程对 CPU 的使用率也是不一样的, 咱们须要找到最耗 CPU 的线程 ID
top -Hp 1584,显示一个过程的线程运行信息列表
- H 打印线程信息
- p 指定 pid
同样不要退出 top, 键入 P (大写 p),线程依照 CPU 使用率排序
比方咱们找到 CPU 使用率使用率最高的线程 ID 是 1592
将线程 PID 转化为 16 进制
> printf "%x" 1592
638
查看堆栈
> jstack 1584 | grep‘0x638’-C5 --color
这样就能够找到引起 CPU 使用率过高的问题代码地位。
原文链接:https://rumenz.com/rumenbiji/…
微信公众号: 入门小站