生产环境出现 CPU 占用过高,不用看日志也能定位

330 阅读1分钟

先用top命令找出CPU占比最高的进程

在这里插入图片描述

进一步定位

jps -l 或者 ps -ef|grep java|grep -v grep

在这里插入图片描述

定位到具体的线程或者代码

ps -mp 进程id -o THREAD,tid,time 如: ps -mp 25754 -o THREAD,tid,time

  • -m 显示所有的线程
  • -p pid进程使用 CPU 的时间
  • -o 该参数后是用户自定义格式
    在这里插入图片描述

将线程ID转换为16进制格式

英文小写格式

在这里插入图片描述
上图有问题的线程Id转成16进制:

十进制 十六进制
25755 649b

jstack 进程ID | grep 16进制的线程ID -A60

-A60 表示前60行

jstack 25754 | grep 649b -A60

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
成功找到问题所在了,该类第14行附近


Mr.superbeyone