上一篇 下一篇 分享链接 返回 返回顶部

服务器CPU突然飙到100%怎么办?一次真实排查过程记录

发布人:tianfen 发布时间:2026-06-23 16:46 阅读量:1243

最近在看服务器状态的时候,遇到一个比较典型的问题:CPU突然异常升高。

当时并不是慢慢上涨,而是直接飙到接近100%,网站访问也开始明显变慢。

这类问题如果不及时处理,很容易影响整站稳定性,所以我第一时间做了排查。

一、问题出现的具体表现

当时的情况大概是这样:

  • 网站访问变慢,但没有报错

  • 后台还能打开,但响应延迟明显

  • SSH登录略有卡顿

  • 服务器负载明显升高

第一反应不是重启,而是先看“到底是谁在占资源”。

二、进入服务器查看CPU状态

我先用最基础的命令查看:

top

可以看到CPU已经接近100%,而且是持续状态,不是瞬间波动。

重点是:

👉 不是单一峰值,而是持续占用

这说明不是短时间请求,而是某个进程在“卡住循环执行”。

三、定位具体占用进程

继续在 top 里面按 CPU 排序后,发现一个异常点:

  • 有一个PHP相关进程长期占用CPU 70%+

  • 另一个辅助脚本进程也在持续运行

这里就开始有方向了。

说明问题不在系统本身,而在某个任务或脚本执行异常

四、进一步追查来源

我顺着进程PID查了一下:

ps -aux | grep php

发现这个进程并不是网站正常访问产生的,而是:

👉 定时任务触发的脚本

然后我又检查了定时任务:

crontab -l

发现有一个日志处理任务,每分钟执行一次。

五、真正的问题原因

最后定位下来原因其实比较典型:

👉 日志文件体积过大
👉 定时任务每次都要重新扫描处理
👉 执行时间 > 间隔时间
👉 任务叠加后CPU被持续占用

简单说就是:

任务还没跑完,下一次又开始了,导致无限叠加。

六、紧急处理步骤

当时我做了几个操作来快速恢复:

1. 结束异常进程

kill -9 PID

2. 暂停定时任务

crontab -e

先注释掉相关任务

3. 清理异常日志文件

删除了过大的日志文件,减少处理压力

4. 重启相关服务

systemctl restart php-fpm

七、恢复结果

处理完成后大概1分钟内:

  • CPU从100%降到20%左右

  • 网站访问恢复正常

  • SSH延迟消失

  • 服务器负载恢复稳定

八、这次问题的核心经验

这次问题其实不是性能问题,而是一个很典型的情况:

👉 “定时任务 + 日志堆积 + 没有限制机制”

很多人遇到CPU高都会第一时间怀疑:

  • 被攻击?

  • 配置不够?

  • 服务器不行?

但实际上很多时候是:

自己的脚本在“重复消耗资源”

九、后续我做的优化

为了避免再次出现类似问题,我做了几个调整:

  • 日志按天拆分

  • 定时任务增加执行间隔

  • 限制脚本执行时间

  • 定期清理历史日志文件

📌 总结一句话

CPU突然飙高,不一定是外部攻击,大多数情况是:

👉 内部任务失控或数据堆积导致的资源循环占用

目录结构
全文