首页 观点 网站 网站运维 网站CPU突然跑满,应该从哪里排查?
07.142026

网站CPU突然跑满,应该从哪里排查?

企业网站在运行过程中,有时会突然出现访问变慢、后台卡顿、页面打不开,甚至服务器直接失去响应的情况。登录服务器后,经常会发现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、数据库或服务器,确实可能让网站暂时恢复,但它不会消除问题根源。

更合理的处理方式是:

  1. 先恢复网站访问

  2. 保留异常日志和进程信息

  3. 确认高占用进程

  4. 分析访问日志和慢查询

  5. 检查插件、程序和定时任务

  6. 处理攻击或异常请求

  7. 完成缓存和服务器配置优化

  8. 持续观察CPU变化


标签: CPU 故障排查
地址: https://www.pady.com.cn/maintenance/263128.html
来源: 网络
最后更新时间: 2026-07-14 15:53:51

上一篇:

下一篇: 如何通过 CDN、动静分离与负载均衡,让高访问量的官网跑得快又稳?

更多网站建设解决方案

网站建设咨询
Hi,我是您的专属顾问

为您提供专业的产品开发方案

对话产品经理

或致电:0571-85815193

讨论您的项目并了解

提交您的详细建站或开发需求,与我们一起实现

立刻预约