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