问题出现得很突然,日志倒是留得挺全。GSC 里 sitemap 的读取状态是 503,浏览器打开正常,隔几分钟再试又能读到,抓取记录断断续续。
真正麻烦的地方在于,几个原因的现象几乎一样。生成 sitemap 时实时查库,耗时过长触发网关超时并返回 503。也可能是服务器对爬虫做了限流,短时间内多次请求被拒绝。
少数情况下是文件过大导致 PHP 内存耗尽,进程被回收。
先重复请求几次看是否稳定复现
for i in 1 2 3; do curl -s -o /dev/null -w '%{http_code} ' https://www.example.com/sitemap.xml; done
再往下改成静态文件定时生成
wp sitemap generate --quiet
给 sitemap 单独放宽超时和内存
fastcgi_read_timeout 60s;
白天有业务在跑,能验证的部分都压到了晚上做。
改完先别撤,确认这几项。连续多次请求都返回 200,GSC 里的读取状态恢复正常,读取到的条数稳定不再波动。
容易忽略的是,动态生成的 sitemap 在流量高峰最容易超时,缓存成静态文件基本能根治,顺带还能降低数据库压力。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。