天天看點

排查CPU使用率高的線程

在日常工作中,我們有時候需要排查線上問題,找出系統中CPU使用率最高的線程.當然,我們這裡預設被排查的線程在JVM中,而不是其他非JVM的線程.

涉及的指令

$ top
$ ps
$ jstack
      

思路

1.根據top和ps指令查找到程序中CPU使用率最高的線程(核心級線程)
2.将核心級線程的十進制轉成十六進制
3.根據jstack指令擷取JVM級的線程資訊
      

方式一

1.通過top指令找到CPU消耗(%CPU列)最高的程序, 并記住PID
2.通過top -Hp PID 找到CPU消耗(%CPU列)最高的線程, 并記住線程TID
  通過printf "%x\n" 十進制線程TID # 将十進制轉成十六進制
3.通過jstack PID | grep 十六進制TID -A 30
      

方式二

1.通過top指令找到CPU消耗(%CPU列)最高的程序, 并記住PID
2.通過ps -mp PID -o THREAD,tid,time 找到CPU消耗(%CPU列)最高的線程, 并記住線程TID
  通過printf "%x\n" 十進制線程TID # 将十進制轉成十六進制
3.通過jstack PID | grep 十六進制TID -A 30
      

繼續閱讀