企业网站在运行过程中,有时会突然出现访问变慢、后台卡顿、页面打不开,甚至服务器直接失去响应的情况。登录服务器后,经常会发现CPU使用率已经接近100%。
CPU跑满只是表面现象,真正原因可能来自网站程序、数据库、插件、恶意访问、定时任务,也可能是服务器配置不足。遇到这种情况,不能只重启服务器,而应该按顺序排查。
一、先确认哪个进程占用CPU
首先查看服务器当前的进程占用情况,确认到底是哪个程序消耗了大量CPU。
常见的高占用进程包括:
PHP或PHP-FPM
MySQL或MariaDB
Nginx、Apache
Java、Node.js
定时任务脚本
安全扫描或备份程序
如果是PHP进程占用较高,通常需要继续检查网站程序、插件或访问请求;如果是数据库占用较高,则要重点查看慢查询、数据表和程序查询逻辑。
只有先找到具体进程,后面的排查才有方向。

二、检查网站访问日志
很多网站CPU突然升高,并不是正常用户访问造成的,而是短时间内出现了大量异常请求。
可以查看Nginx或Apache访问日志,重点观察:
同一个IP是否频繁请求
某个页面是否被连续访问
是否大量访问登录页、搜索页或接口
是否存在扫描漏洞的请求
是否有大量404请求
是否有爬虫高频抓取动态页面
WordPress网站常见的异常请求包括:
/wp-login.php/xmlrpc.php/wp-admin/搜索接口
第三方插件接口
不存在的备份文件和配置文件
如果发现某些IP或URL请求明显异常,可以通过服务器防火墙、Nginx、Cloudflare或其他安全服务进行限制。
三、检查WordPress插件和主题
对于WordPress网站,插件是导致CPU异常升高的常见原因之一。
一些插件会持续执行以下任务:
扫描网站文件
同步图片到对象存储
生成缩略图
执行数据库统计
自动备份
检查死链
推送搜索引擎
执行缓存预热
调用第三方接口
当插件出现循环执行、接口超时或兼容性问题时,可能会持续占用CPU。
排查时可以先停用近期安装或升级过的插件,再观察服务器资源是否恢复正常。必要时,还可以逐个停用插件,缩小问题范围。
主题中的自定义代码也需要检查,尤其是页面访问时执行大量查询、远程请求或复杂计算的功能。

四、检查数据库慢查询
如果CPU主要被MySQL占用,需要检查数据库是否存在慢查询。
常见问题包括:
数据表过大
查询字段没有索引
搜索功能查询范围过大
插件生成大量无用数据
数据库自动加载数据过多
某个接口频繁重复查询
数据表损坏或锁表
WordPress网站还可以重点检查:
wp_options表是否过大autoload自动加载数据是否异常wp_postmeta数据量是否过多定时任务记录是否不断累积
日志表、统计表是否长期没有清理
仅仅重启MySQL只能暂时恢复,真正解决问题还需要找到具体的慢查询和异常数据表。
五、检查定时任务
服务器和网站中通常都存在定时任务。
例如:
WordPress WP-Cron
Linux Crontab
自动备份
数据同步
图片处理
日志清理
缓存预热
邮件发送
第三方数据采集
如果定时任务执行时间过长,或者上一次任务还没有结束,下一次任务又开始执行,就可能形成多个重复进程,最终将CPU占满。
对于访问量较大的网站,可以考虑关闭WordPress默认的访问触发式WP-Cron,改为服务器定时任务执行,但需要正确配置执行频率。

六、检查网站是否被攻击或植入恶意程序
网站被入侵后,恶意程序也可能持续消耗服务器资源。
常见情况包括:
PHP后门持续执行
恶意脚本批量发送邮件
网站被植入挖矿程序
文件被篡改后持续连接外部服务器
攻击者利用网站接口执行大量请求
大量垃圾注册和垃圾表单提交
排查时需要检查近期修改过的文件、异常PHP文件、陌生进程、可疑定时任务和外部网络连接。
如果网站已经被入侵,仅删除一个可疑文件通常不够,还需要检查漏洞入口、更换相关密码,并对程序、插件和服务器环境进行完整加固。
七、检查缓存是否失效
正常情况下,缓存可以明显降低PHP和数据库压力。
如果缓存插件失效、缓存目录没有写入权限,或者缓存文件没有正常生成,所有访问都会直接执行动态程序,CPU使用率就可能快速升高。
需要检查:
页面缓存是否正常生成
缓存目录是否可写
CDN是否命中缓存
PHP OPcache是否启用
Redis或Memcached是否正常
是否有参数导致缓存被绕过
登录状态和Cookie是否影响缓存
缓存并不是安装插件后就一定生效,还需要确认实际请求是否真正命中缓存。
八、判断服务器配置是否不足
如果排查后没有发现明显异常,也可能是服务器配置已经无法满足当前业务。
例如:
网站访问量持续增加
动态查询较多
多个网站共用一台服务器
图片处理任务较重
PHP并发进程过多
数据库数据量不断增加
这时需要结合CPU核心数、内存、磁盘IO、带宽和实际并发量综合判断。
不过,服务器升级不应该是第一步。程序或攻击导致的CPU跑满,即使升级配置,也可能很快再次出现。
九、不要只依赖重启服务器
重启PHP、数据库或服务器,确实可能让网站暂时恢复,但它不会消除问题根源。
更合理的处理方式是:
先恢复网站访问
保留异常日志和进程信息
确认高占用进程
分析访问日志和慢查询
检查插件、程序和定时任务
处理攻击或异常请求
完成缓存和服务器配置优化
持续观察CPU变化
