首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux系统cpu飙升到100%排查方案

Linux系统cpu飙升到100%排查方案

作者头像
正在走向自律
发布2024-12-17 17:15:20
发布2024-12-17 17:15:20
1K0
举报
文章被收录于专栏:人工智能领域人工智能领域

碧彩商城项目实战案例参考

问题描述:Linux服务器CPU突然飙升到100%,这时候系统直接卡死,很多新手面对这种情况经常束手无策,本文就针对这个问题提出个人方案,希望能帮助到你们。

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、服务器配置低等等,具体问题要具体分析。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 top查看cpu较高的进程
  • 2 top -H -p pid找出线程
  • 3 转为十六进制
  • 4 jstack 线程栈导出
  • 5 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档