小服务器 CPU 跑满别急着重启:三步揪出吃 CPU 的进程

举报
yd_230305343 发表于 2026/11/06 15:01:19 2026/11/06
【摘要】 监控报警说 CPU 100%,很多人的第一反应是重启——先别。重启会把现场冲得干干净净:不知道是谁吃满的,重启完它过会儿大概率还会回来,而且你连它是敌是友都判断不了。满载排查其实不难,顺着下面三步走,十分钟就能把元凶揪出来。 第一步:top 先看整体,分清「真忙」还是「假忙」top先看右上角的 load average:三个数是 1、5、15 分钟的平均负载。对照你的核数——2 核机器负载长...

监控报警说 CPU 100%,很多人的第一反应是重启——先别。重启会把现场冲得干干净净:不知道是谁吃满的,重启完它过会儿大概率还会回来,而且你连它是敌是友都判断不了。满载排查其实不难,顺着下面三步走,十分钟就能把元凶揪出来。

第一步:top 先看整体,分清「真忙」还是「假忙」

top

先看右上角的 load average:三个数是 1、5、15 分钟的平均负载。对照你的核数——2 核机器负载长期到 4 以上才是真排长队。再看 CPU 那一行的构成:us 是用户进程在算,sy 是内核在忙,重点看 wa(iowait):如果 wa 很高、us 并不高,那 CPU 其实在等磁盘读写,报警虽然写着 CPU,病的却是磁盘,这时候加 CPU 配置一点用没有。

第二步:点名,看是谁在吃

ps aux --sort=-%cpu | head -10

或者还在 top 界面时按 P(按 CPU 排序)。看清楚三件事:进程名是不是你认识的、占了多少、是单个进程吃满,还是大家一起涨。单个进程长期 100%,在多核机上往往是它只跑了一个线程——这时总 CPU 可能才 50%,但业务已经卡了,别被总数迷惑。想细到线程,再用 top -H -p <PID> 看是哪条线程在跑。

第三步:定性,自己人、系统进程还是陌生人

  • 自己的服务:多半是死循环、慢查询拖垮,或者流量真涨了。先用 renice 把优先级降下来缓一口气,再看日志定位,别上来就 kill——生产进程杀错一次比满载还疼。
  • 系统进程:kworker、systemd 这类偶尔冲高通常是内核在做 IO 或回收,等一等会自己下去;长期居高不下再深挖。
  • 不认识的进程:名字像随机字符串、CPU 长期拉满、还往陌生 IP 发连接——这是挖矿木马的典型画像。先把进程名、PID、命令行和连接记下来留证(ps -fp <PID>、ss -tnp),再停掉并排查它是怎么进来的,改口令、查计划任务和启动项,不然杀掉也会被拉起来。

结论

CPU 跑满是症状不是病因:wa 高查磁盘,单进程查代码或流量,陌生进程查入侵。养成「先 top 定性、再 ps 点名、最后才动手」的顺序,多数满载十分钟内能收场,重启只留给确认无解的最后一步。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。