先把能直接观察到的结果记下来,再逐项排除,比反复试参数省时间。 服务器日志里 Googlebot 间隔不到一秒就来一次,robots.txt 里明明写了 Crawl-delay: 10,抓取频率一点没降,带宽和 CPU 都被拖得很高。

这类问题不处理会继续放大,轻则个别请求失败,重则整批任务全部卡住。

先分清是哪一类原因

  1. Google 早已不支持 Crawl-delay,只认 Bing 和 Yandex 两家
  2. 真实抓取频率由服务器响应时间和抓取预算决定,不是这行参数
  3. 限流写在 robots 而不是 Nginx,蜘蛛读完这行直接忽略继续高频抓取

按顺序处理

1. 确认 robots 里的写法有没有被解析

curl -s https://www.example.com/robots.txt | grep -i crawl

2. 在 Nginx 里按 UA 做并发限制

limit_req_zone $http_user_agent zone=bot:10m rate=2r/s;

3. 统计单 IP 的请求间隔验证效果

awk '{print $4}' access.log | cut -c14-18 | sort | uniq -c

怎么确认已经恢复

同一 IP 每分钟请求数从六十次降到二十次左右,日志里不再出现连续同一秒的密集抓取,负载曲线同时回落。

容易忽略的地方

Bing 认这个参数,但站点如果已经提交 IndexNow,调它基本没有意义,Bing 会按推送即时抓取,绕开你设的间隔。 线上环境和本地环境的差异往往就在版本和默认参数上,比对一下两边的实际取值能省很多时间。

作者 9823189