1 top查看cpu较高的进程
1.登陆Linux服务器,用 top命令查看占用CPU最高的进程,如下图所示:

2 top -H -p pid找出线程
然后在用下面的命令找出线程
-H表示以线程的维度展示,默认以进程维度展示。
例如:top -H -p 5031

3 转为十六进制
一共1个占用cpu的线程id 7556 ,需要将线程id从十进制转为十六进制,因为java线程栈文件中的线程id是十六进制。十进制 转十六进制的命令是:
echo "obase=16;number" | bc
obase(output base)是输出的进制,
number是输入值,默认十进制,
bc(An arbitrary precision calculator language)是任意进制转换语言。
命令例如:echo "obase=16;5273" | bc

4 jstack 线程栈导出
将java进程的线程栈导出
例如:jstack 5031 > ./thread5273Dump.log
找相关字眼:locked、RUNNABLE


问题分析:通过上图可以分析出,for循环导致的,杀掉进程 kill -9 pid(pid指的是进程id,通过上面top命令可以查看),然后优化代码重新发版;建议再看看有没有其他进程cpu也很高的情况,如果还有需要再次排查,尽量全面找出更多问题。
5 总结
(1)top ---->CPU100%---> 5031
(2)top -H -p 5031 --->5273
(3)echo "obase=16;5273" | bc --->1499
(4)jstack 5031 > ./thread5273Dump.log
温馨提示:每个服务器和系统导致的cpu飙升100%情况都可能不一样,大家要懂得举一反三,上面只是一种比较常见情况,比如还有慢sql、服务器配置低等等,具体问题要具体分析。
参考:https://cloud.tencent.com/developer/article/2478183;
https://blog.csdn.net/Teminator_/article/details/140999346;
https://www.cnblogs.com/cherishthepresent/p/17474952.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)