CPU一直很高 如何定位问题?
1. top 命令找出占用 cpu资源最多的进程
查看进程运行信息表
top -c
按进程使用率排序
输入P
2. 查找进程中最耗CPU的线程
查看线程运行信息表
top -Hp 7521
按进程使用率排序
输入P
3. 将线程 pid转化为 16 进制
之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。
4. 打印进程堆栈,找到当前线程再干什么
jstack 7521 | grep ‘1da4n’ -C5 --color
- 打印进程堆栈
- 通过线程id,过滤得到进程堆栈