网站响应突然变慢,后台打开需要十几秒,监控又显示CPU占用达到100%,这时最容易做的动作是重启服务器。重启确实可能让曲线暂时降下来,但也会把刚才的进程状态和故障线索一起清掉。
我更建议先花几分钟确认CPU时间消耗在哪里。单个程序跑满、磁盘等待过高、虚拟化环境资源争用,看起来都像服务器很忙,处理方向却完全不同。

CPU占用高和负载高不是一回事
先执行下面两个只读命令,Ubuntu、Debian、Rocky Linux 和 AlmaLinux 都适用:
uptime
top
uptime 里的三个数字是最近1分钟、5分钟和15分钟的平均负载。负载包含正在使用CPU和等待运行的任务,不能直接等同于CPU百分比。4核服务器的负载长期接近4,和1核服务器负载接近4,压力程度并不一样。
进入 top 后重点看用户态 us、内核态 sy、I/O等待 wa、空闲 id 和虚拟化等待 st。先分清CPU正在计算,还是任务在等待别的资源。 wa 很高时只升级CPU通常没有帮助,磁盘延迟、数据库读写或日志写入才更值得检查。
先找到持续占用的进程
可以按CPU使用率列出当前最忙的进程:
ps -eo pid,ppid,user,comm,%cpu,%mem,etime --sort=-%cpu | head -n 15
这里既要看占用比例,也要看进程已经运行多久。压缩备份、软件更新和图片处理短时间跑高,任务结束后会自行回落;PHP、Java、数据库或未知进程连续占满,才需要继续追踪。
多核环境里,单个多线程进程可能显示超过100%。反过来,某个单线程进程在8核服务器上跑满一核,总CPU曲线可能只有12%左右。不要只凭一个百分比判断程序是否异常。
进程名正常也要看线程和请求来源
Nginx、PHP-FPM、MySQL 和 Java 都是正常服务名,但正常名称不代表当前行为正常。某个PHP脚本陷入循环、爬虫集中请求动态页面、数据库查询缺少索引,都可能让这些进程持续吃满CPU。
Java 或其他多线程程序可在 top 中按 H 查看线程,也可以针对进程执行:
top -H -p PID
把 PID 换成确认过的进程号。网站环境还要把CPU峰值时间与访问日志、慢查询日志和应用日志对齐。进程列表告诉你谁在消耗CPU,业务日志才可能解释它为什么忙。
iowait和steal高时不要盯着应用
wa 持续升高,说明任务在等待I/O。可以继续查看磁盘容量、内核日志和存储压力;系统安装了 iostat 时,也可观察设备延迟和利用率。此时杀掉一个暂时排在前面的进程,可能只会让另一个等待任务补上来。
st 代表虚拟机等待宿主机分配CPU时间。偶尔出现小幅波动不必直接下结论,持续偏高且业务延迟同步上升时,应保留监控截图和时间段,再联系服务商核查宿主机资源。这个指标无法通过优化网站代码彻底解决。
不要看到高占用就直接kill -9
强制结束进程会绕过程序的正常退出流程。数据库正在写入、备份正在生成或队列正在处理时,直接执行 kill -9 可能留下不完整文件和待恢复事务。
先确认进程用途、父进程和启动方式。由 systemd 管理的服务优先通过 systemctl 正常停止或重启;异常脚本可先限制入口、暂停触发任务,再保存日志。只有进程失去响应且普通终止无效时,才考虑强制结束。
对名称陌生、路径位于临时目录、重启后又自动出现的高占用进程,还要检查计划任务、启动项和账号安全。不要把疑似入侵简单当成性能不足。
什么时候应该升级CPU
找到异常请求、死循环或错误任务后,应先修根因。程序修好后CPU仍在正常业务高峰长期超过80%,排队和响应时间也同步增加,才说明现有计算资源可能确实不足。
扩容前最好保留一天以上的峰值曲线,确认需要增加的是CPU、内存还是磁盘性能。准备新环境做并行压力验证时,可以对比支持后续升级的 萤光云,以及按小时计费、便于保留短期对照服务器的 LightNode。换平台不是修复异常程序的捷径,测试重点仍是相同流量下的CPU、延迟和错误率。
处理后怎么验收
不要只看重启后的瞬时曲线。修复后至少覆盖一次原本容易跑高的定时任务或业务高峰,再比较1分钟、5分钟和15分钟负载、CPU各项时间、网站响应和错误日志。
通过验收应满足高占用进程不再异常增长、请求延迟恢复、日志没有新增报错,并且CPU保留合理余量。只让100%变成90%,但页面仍然很慢,问题并没有真正解决。
常见问题
CPU占用100%会导致服务器宕机吗?
不一定直接宕机,但任务会排队,SSH、网站和数据库响应都可能明显变慢。持续高占用还可能放大超时和服务健康检查失败。
重启后CPU恢复正常还需要排查吗?
需要。重启会结束当时的进程,却不能说明触发原因已经消失。应检查重启前后的系统日志、应用日志和定时任务。
负载高于CPU核心数就一定要升级吗?
不一定。磁盘等待、不可中断任务和短时批处理也会推高负载,先结合 top 中的CPU时间和业务延迟判断。


