Linux:CPU使用率问题快速定位

  • 2017-09-20
  • 29
  • 0
  • 0
一般来说,CPU使用率100%问题,可以从两方面去排查:
  • 功能问题,可以通过日志,单步调试;
  • 性能问题,则需要找到引起CPU问题的相关服务;
假设,某服务器部署了若干Tomcat实例和若干JAVA微服务,该服务器突然报警CPU异常。
如何定位是哪个服务导致CPU过载?
哪个线程导致CPU过载?
哪段代码导致CPU过载?

1、找到CPU使用率最高的进程

可以通过tophtop
top -c # 显示进程详细列表
P      # 安装CPU使用率排序,默认是降序。
以此找出CPU使用率最高的进程PID。

2、找到CPU使用率最高的线程

top -Hp PID # 显示该进程的线程信息;
P           # 将线程按照CPU使用率排序,默认是降序。

3、将线程PID转化为16进制

由于堆栈中,线程PID是用16进制表示的,所以需要将线程PID转换为16进制
printf "%x\n" 线程PID # 得到线程PID对应的16进制XXXX

4、在堆栈中找到该线程究竟干了啥

通过jstack命令来查看堆栈,用grep来过滤出该线程相关信息的前后5行。
 
jstack 进程PID|grep 'xxxx' -C5 --color

评论

还没有任何评论,你来说两句吧