CPU一直很高 如何定位问题?

CPU一直很高 如何定位问题?

1. top 命令找出占用 cpu资源最多的进程

查看进程运行信息表

top -c

按进程使用率排序

输入P

CPU一直很高 如何定位问题?

2. 查找进程中最耗CPU的线程

查看线程运行信息表

top -Hp 7521

按进程使用率排序

输入P

CPU一直很高 如何定位问题?

3. 将线程 pid转化为 16 进制

CPU一直很高 如何定位问题?
之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。

4. 打印进程堆栈,找到当前线程再干什么

jstack 7521 | grep ‘1da4n’ -C5 --color

  • 打印进程堆栈
  • 通过线程id,过滤得到进程堆栈