服务器 CPU 突然飙高?用 top 和 ps 三步揪出吃 CPU 的进程

举报
yd_211833921 发表于 2026/11/12 07:02:47 2026/11/12
【摘要】 服务器突然变慢,网页打开转圈,远程连接也一卡一卡,这时候最忌讳上来就重启,先花几分钟把真正吃掉处理器资源的进程找出来,问题往往就解决了一半,下面三步是我在线上排障时最常用的顺序,从整体到局部,越往后越精准。第一步,先用 top 看整体负载和占用最高的进程在终端里输入 top ,先看第一行的负载均值,它代表最近一段时间内等待使用处理器的任务数量,再看下面任务总数里正在运行和等待的任务有几个,如...

服务器突然变慢,网页打开转圈,远程连接也一卡一卡,这时候最忌讳上来就重启,先花几分钟把真正吃掉处理器资源的进程找出来,问题往往就解决了一半,下面三步是我在线上排障时最常用的顺序,从整体到局部,越往后越精准。

第一步,先用 top 看整体负载和占用最高的进程
在终端里输入 top ,先看第一行的负载均值,它代表最近一段时间内等待使用处理器的任务数量,再看下面任务总数里正在运行和等待的任务有几个,如果等待的任务很多,说明处理器确实在排队,接着看占用率最高的那几行,重点看处理器占用率这一列,数值一直居高不下又没有下降趋势的进程最可疑,再看内存占用率这一列做对照,有些进程处理器占用不高但内存一直在涨,也可能是同一次故障的另一面,把可疑进程的进程号记下来,后面还要用它继续深挖,不要只看一眼就下结论,多刷新几次,确认占用是持续性的,而不是某个短暂任务刚好撞上。

第二步,再用 ps 按处理器占用排序,把全量进程排个队
top 适合看动态变化,ps 适合看一张全量快照,用 ps aux 加按处理器占用的排序参数,把所有进程按处理器占用从高到低排出来,第一行往往就是真凶,对照它的用户名、启动时间和完整启动命令,判断它是业务进程、定时任务,还是某个失控的后台脚本,如果启动时间正好和故障开始时间吻合,可疑程度就更高,再结合进程号查它的父进程,看看是谁把它拉起来的,是手动启动的调试进程,还是定时任务触发的批量处理,顺着这条链往上找,往往能找到故障的源头而不是只处理表面症状。

第三步,看进程详情,再决定是放行还是处置
定位到进程号之后,先看它打开了哪些文件和网络连接,再看它最近的系统调用和运行状态,判断它是在正常干活,还是卡在了某个循环或者等待外部接口返回,如果是业务高峰导致的正常繁忙,先考虑限流、扩容或者把非核心任务挪到低峰期再跑;如果是某个写错的循环或者重复触发的定时任务,先暂停触发源,再平稳结束失控进程,结束之后不要立刻离开,重新用 top 观察几分钟,确认处理器占用回落,负载均值回落,网页响应恢复正常,再把这次的进程号、启动时间、触发原因和处置动作记下来,下次再遇到类似飙高,就能直接对照处理,不用从头再查一遍。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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