【WP Rocket 故障复盘】预加载卡死循环:同一 URL 被疯狂访问数万次,最终靠清理数据库解决
› 社区话题 › wordpress开发 › 【WP Rocket 故障复盘】预加载卡死循环:同一 URL 被疯狂访问数万次,最终靠清理数据库解决
- 该话题为空。

- 作者帖子
- 2025年9月6日 - 下午4:49 #1044
追光管理员? 插件:WP Rocket
⚠️ 严重等级:高 —— 可导致服务器宕机、资源耗尽?️ 问题现象
今天上午,网站突然出现:
服务器 CPU 飙升至 100%
网站响应缓慢甚至超时
查看访问日志发现:同一个 URL 被 WP Rocket 预加载功能反复访问了几千次、几万次
没有轮换 URL,始终是同一个地址(比如 /product/xxx 或 /post/123)→ 显然,这不是正常行为。WP Rocket 的 Sitemap Preload 本应按批次遍历所有 URL,而不是死循环卡在某一个。
ip [06/Sep/2025:16:43:10 +0800] "GET /qualifier2 HTTP/1.1" 200 6499 "-" "wprocketbot" ip [06/Sep/2025:16:43:14 +0800] "GET /qualifier2 HTTP/1.1" 499 6499 "-" "wprocketbot"
? 初步排查
1. 检查 WP Rocket 设置
“Preload → Sitemap Preload” 功能开启
频率设置异常为 5 分钟(默认应为 10 小时)
但即使频率短,也不该卡在单个 URL —— 说明“分批处理”机制出错2. 检查 Cron 任务
wp_rocket_sitemap_preload 任务确实在高频执行
但每次执行都只处理同一个 URL,没有推进到下一批3. 怀疑缓存/状态记录异常
WP Rocket 使用 wp_sitemeta 表(多站点)或 wp_options 表存储预加载批次状态
关键键名:wp_rocket_sitemap_preload_batch_%? 根本原因推测
WP Rocket 在执行 Sitemap 预加载时:
1. 读取 sitemap.xml 获取所有 URL
2. 分批处理(如每批 20 个 URL)
3. 记录当前批次状态到数据库(如 wp_rocket_sitemap_preload_batch_1, batch_2…)
4. 下次 Cron 执行时,从断点继续➡️ 本次故障推测:
某个批次处理过程中发生错误(如页面 500、超时、插件冲突)
导致“当前批次”状态未被清除或更新
下次任务仍从同一批次开始 → 无限循环访问同一批 URL(甚至同一个 URL)
加上 Cron 频率被错误设为 5 分钟 → 雪崩效应?️ 解决方案
✅ 第一步:紧急止血 —— 清除预加载批次状态
我直接登录数据库,执行了以下 SQL:
select FROM 数据库名.wp_sitemeta WHERE meta_key LIKE 'wp_rocket_sitemap_preload_batch_%';
DELETE FROM 数据库名.itao_sitemeta WHERE meta_key LIKE 'wp_rocket_sitemap_preload_batch_%';
? 注意:表名根据你的环境调整:
单站点用 wp_options
多站点用 wp_数字_sitemeta 或自定义前缀如 i_sitemeta执行后:
WP Rocket 预加载任务“重置状态”
下次执行时从头开始遍历 sitemap
循环访问停止,服务器负载迅速恢复正常 ✅? 经验总结
| 项目 | 说明 |
|||
| ? 危险信号 | 同一 URL 被重复访问 + 高频 Cron = 服务器灾难 |
| ? 根本原因 | 预加载批次状态卡死 + Cron 频率异常 |
| ? 解决关键 | 清除 wp_rocket_sitemap_preload_batch_% 状态记录 |
| ⚙️ 预防措施 | 设置合理 Cron 频率 + 限制每批 URL 数量 + 排除高负载页面 |
| ? 建议频率 | 10 小时或 24 小时,除非内容极高频更新 |? 附录:相关数据库键名(供排查使用)
sql
-多站点SELECT * FROM wp_sitemeta WHERE meta_key LIKE 'wp_rocket_sitemap_preload%';
-单站点
SELECT * FROM wp_options WHERE option_name LIKE 'wp_rocket_sitemap_preload%';
常用键:
wp_rocket_sitemap_preload_batch_1
wp_rocket_sitemap_preload_batch_cursor
wp_rocket_sitemap_preload_last_time
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。