记录一次 CPU 占用过高的排查步骤

274 阅读1分钟

首先通过top命令找出CPU占用率高的进程ID

top -c

通过ps -o THREAD,tid,time -mp 【进程ID】命令找出执行时间最长的线程的TID

ps -o THREAD,tid,time -mp  [进程ID]

将TID转换成16进制

printf "%x\n"  [TID]

导出线程dump(JDK的路径根据实际环境修改)

/apps/server/jdk8/bin/jstack -l [进程ID] > /apps/[进程ID].txt

在线程dump中搜索对应线程信息

在 dump 日志中可以看到具体的堆栈信息,然后结合系统业务,调整代码逻辑,基本可以解决问题。 比较原始的解决办法,勿喷,如有更好的解决方案,也欢迎大家一起讨论。嘿嘿嘿。。。