问题背景
一台配置为 2 核 4GB 内存的服务器用于部署 WordPress 企业站点,同时运行宝塔面板、PHP-FPM、MySQL 和 Redis。
服务器监控中出现负载 100% 的情况,但 CPU 使用率并不高,内存也没有耗尽。

系统负载显示:
1分钟负载:8.82
5分钟负载:11.54
15分钟负载:5.58
但是 CPU 状态:
idle:97%
iowait:0.2%
因此需要进一步确认负载来源。
问题一:服务器负载100%,为什么CPU没有占满?
原因
Linux 的 load average 不等同于 CPU 使用率。
服务器负载包含:
- 正在使用 CPU 的任务
- 等待 CPU 的任务
- 等待磁盘或其他资源的任务
因此可能出现:
- CPU 使用率很低
- 内存正常
- 但是 load average 很高
这种情况通常和以下因素有关:
- PHP 请求阻塞
- 数据库查询等待
- 磁盘 I/O
- 大量并发任务
问题二:如何确认是不是WordPress导致?
方法
查看访问日志:
tail -5000 /www/wwwlogs/web-chang.com.log
统计访问接口:
awk '{print $7}' log文件 | sort | uniq -c | sort -nr
排查结果发现大量请求集中在:
/wp-admin/admin-ajax.php
/wp-json/elementor/v1/checklist/user-progress
/wp-json/elementor/v1/global-classes
/wp-json/rankmath/v1/updateMeta
/wp-cron.php
admin-ajax.php?action=as_async_request_queue_runner
说明主要压力来自 WordPress 后台接口和插件任务。
问题三:具体是什么组件产生大量请求?
原因分析
主要来源:
1. Elementor
Elementor 页面编辑器会持续调用:
- REST API
- 页面状态同步
- 全局样式同步
- 检查任务
例如:
/wp-json/elementor/v1/checklist/user-progress
2. WP-Cron
WordPress 默认使用访问触发定时任务。
访问:
/wp-cron.php?doing_wp_cron
时会执行:
- 插件任务
- 数据同步
- 清理任务
- 队列任务
如果站点访问量增加,会产生额外 PHP 请求。
3. Action Scheduler
日志中出现:
admin-ajax.php?action=as_async_request_queue_runner
说明 WordPress 异步任务队列正在运行。
常见来源:
- Elementor
- WooCommerce
- Rank Math
- 表单插件
问题四:如何降低WordPress服务器负载?
解决方案一:关闭WP-Cron自动触发
编辑:
wp-config.php
增加:
define('DISABLE_WP_CRON', true);
然后使用服务器计划任务执行:
wget -q -O - https://example.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
设置每10分钟执行一次。
这样可以避免用户访问触发后台任务。
解决方案二:限制PHP-FPM并发数量
2核4GB服务器不适合开启过多PHP进程。
建议:
pm.max_children = 8
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
避免大量 PHP 子进程同时占用内存。
解决方案三:开启PHP OPcache
开启:
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
减少 PHP 重复编译消耗。
解决方案四:检查Action Scheduler任务
查询数据库:
SELECT status, COUNT(*)
FROM wp_actionscheduler_actions
GROUP BY status;
如果大量任务处于:
pending
failed
需要清理或者检查对应插件。
问题五:为什么2核4GB服务器容易出现这种情况?
原因
WordPress运行环境通常包含:
- Nginx
- PHP-FPM
- MySQL
- Redis
- 宝塔面板
- 多个插件
2核4GB实际可分配给WordPress的资源有限。
当以下情况同时发生:
- Elementor编辑页面
- WP-Cron执行任务
- 插件后台同步
- 数据库查询增加
PHP请求数量增加后,会导致:
- PHP-FPM进程增加
- 内存压力增加
- Swap使用
- 系统负载升高
总结
本次服务器负载异常的主要原因:
- WordPress Elementor后台请求较多。
- WP-Cron持续触发任务。
- Action Scheduler异步队列执行。
- PHP-FPM并发没有针对低配置服务器优化。
最终优化方向:
- 禁用WP-Cron默认触发。
- 使用计划任务执行Cron。
- 限制PHP-FPM进程数量。
- 开启OPcache。
- 检查插件产生的后台任务。
对于2核4GB服务器部署WordPress企业站,重点不是增加PHP进程数量,而是控制后台任务和插件请求数量。



