必应站长工具里站点地图状态显示 429 已限流,同一时间 IndexNow 提交仍返回 200,抓取统计里 URL 数没有增加,索引量一周没有变化。
一开始怀疑是「提交的 URL 里有大量未改动的旧页面,被判成重复推送」,查了一圈,方向不对。
把日志和配置对完,能解释这个现象的基本就这几处。站点地图拉取和 IndexNow 共用同一套配额,两边同时跑把额度打满。少数情况下是sitemap 每次生成时间戳都变,必应反复重拉同一个文件。
不容易想到的是,站点地图文件超过 50MB,拉取中断后重试又触发限流。
动手时先看站长工具里两边的状态和最近拉取时间
curl -s 'https://www.bing.com/webmasters/api/sitemaps' -H 'accept: application/json'
随后把站点地图拆小并固定生成频率
curl -s https://www.example.com/sitemap.xml | grep -c '<loc>'
只推最近七天有改动的 URL
python push_indexnow.py --since 7d --batch 500
给两边加错峰计划任务
0 3 * * * /opt/seo/push_indexnow.sh >/dev/null 2>&1
恢复的判定其实很直接。三天后站点地图状态回到成功,IndexNow 的提交记录里不再出现 invalid,抓取统计的 URL 数开始回升。
这里还有个坑。配额是共享的,把推送和站点地图排到同一分钟跑,等于自己跟自己抢额度。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
