小服务器 CPU 跑满别急着重启:三步揪出吃 CPU 的进程
【摘要】 监控报警说 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)