工作中遇到CPU使用率100%,不要慌,一起来找出原因并fix掉它。
记住这里大致流程,当线上突然遇到时,也不必手足无措。
总体流程
找出CPU比较高的进程PID
top
打印该进程下线程的CPU占用比较高的tid
top -Hp {PID}
将该tid进行16进制转换id
printf "%x\n" {tid}
打印线程的堆栈信息
jstack {PID} |grep {id} -A 100
当然这四步的执行需要时间,但我们可以将这几步写成shell脚本来执行。
安装JDK命令行工具
服务器上安装的OpenJDK ,是否有常用的命令行工具?
验证是否安装
-
[root@op-system ~]$ jstack -h
-
Usage:
-
jstack [-l] <pid>
-
(to connect to running process)
-
jstack -F [-m] [-l] <pid>
-
(to connect to a hung process)
-
jstack [-m] [-l] <executable> <core>