一次Tomcat CPU占用忽高忽低的排查记录

环境

CentOS 7 apache-tomcat-8.0.28

问题描述

top命令查看系统资源暂用情况,发现CPU暂用忽高忽低(一会占用1%一会又飙升至40~80%)

排查方式

  1. top -c命令查到导致cpu占用异常的进程的PID,确定为是tomcat
  2. top -H -p {PID}获取该进程的线程的详细资源占用情况
  3. 可以看到是PID为19511的线程导致,将19511转16进制,得到:4c37
  4. jstack -l {PID}查看堆栈信息,找到nid为0x4c37的信息,可以看到,这个可能跟tomcat容器本身相关,拿到关键的错误信息上网查询🤣,最后查到了这个https://blog.csdn.net/u013727805/article/details/86605300,最后定位到可能是tomcat的热更新导致,关闭项目的热更新,CPU占用即恢复正常