先看现象。必应后台弹出一条抓取速度受限的提示,站点日均只被访问八千次,服务器负载不到 15%,运维建议在 robots 里加 Crawl-delay: 5 先把压力压下去。
把日志和配置对完,能解释这个现象的基本就这几处。Crawl-delay 只有必应和 Yandex 认,对 Google 完全无效。还有一种是限速提示来自返回码和响应时间,不是请求数超了阈值。
还有一种情况,robots 里的延迟会整体生效,包括 sitemap 和图片抓取。
第一件事是确认提示对应的状态码分布
grep 'bingbot' access.log | awk '{print $9}' | sort | uniq -c | sort -rn
再往下把单次响应时间拉到 200ms 以内再观察
curl -o /dev/null -s -w '%{time_starttransfer}\n' https://www.example.com/
必要时只在服务端按 UA 限并发
limit_req_zone $http_user_agent zone=bing:10m rate=5r/s;
末了观察一周后再决定是否写 Crawl-delay
grep -c 'bingbot' access.log
这类改动我都写进变更记录,过两周再出问题时能对上号。
恢复的判定其实很直接。响应时间从 1.2 秒降到 180ms 后,限速提示自行消失,日志里必应日均抓取量回到 1.6 万。
先修响应时间再谈限速,Crawl-delay 一写就是全站生效,图片和 sitemap 会跟着被拖延。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
