报错是这么冒出来的。Bing Webmaster 的抓取统计里平均响应延迟 12 小时,新文章三天才收录,站点每天更新 80 篇,IndexNow 提交返回 429,后台没有任何报错。

中间走过弯路,把「sitemap 里 lastmod 长期不变,Bing 降低了回访频率」当成主因,改完现象没变。

真正麻烦的地方在于,几个原因的现象几乎一样。IndexNow 单日提交量超过配额,后续请求被静默丢弃。另一种情况是站点响应时间在 Bing 侧测到 3 秒以上,抓取被排到低优先级。

不容易想到的是,服务器对 Bingbot 的 keepalive 连接提前关闭。

第一件事是看 IndexNow 的实际返回码

curl -s -o /dev/null -w '%{http_code}\n' 'https://api.indexnow.org/indexnow?url=https://www.example.com/a/1&key=$KEY'

随后核对最近的提交条数

grep -c 'indexnow' /var/log/nginx/access.log

接着把批量提交拆小并压低频率

curl -X POST https://api.indexnow.org/indexnow -H 'Content-Type: application/json' -d '{"host":"www.example.com","key":"$KEY","urlList":[]}'

量 Bingbot 看到的响应时间

curl -s -o /dev/null -w '%{time_total}\n' -A 'bingbot' https://www.example.com/a/1

恢复的判定其实很直接。IndexNow 返回 200 或 202,Bing 后台的平均响应时间降到 1 秒内,新文章收录间隔缩短到一天。

补一句。Bing 的抓取延迟统计的是它自己的排队时间,不全是服务器慢,配额和响应速度要分开看。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189