搜尋抓取

搜尋蜘蛛抓取:429 限流與 5xx 抖動下的重试退避观察顺序

抓取量突然下降,未必是蜘蛛不来了。本文按服務端信号分類,梳理 429 限流、503 過载與连接层错誤的区分方法,並给出一套從日誌聚合、限流配置到 Sitemap 提交节奏的核對顺序,帮助判断抓取退避的真實成因,避免誤判和過度調整。

搜尋抓取

搜尋蜘蛛抓取:429 限流與 5xx 抖動下的重试退避观察顺序

退避現象往往不是蜘蛛變懒

很多站点运营者發現搜尋蜘蛛抓取量突然下降,第一反應是蜘蛛不来了。但抓取日誌里若密集出現 429、503 或连接超时,更可能的情况是:調度端收到了服務端的负反馈,主動降低了對這個主机的請求频率。抓取预算並没有被砍掉,只是被暂时压低了节奏。

這類問题的难点在于表現一致、成因却很多。下面按先分清信号、再核對配置的顺序梳理。

先把服務端信号分成三類

  • 429 Too Many Requests:多為速率限制触發,来源可能是 CDN 或 WAF 的限流規則,也可能是源站應用层的限流中間件。
  • 503 Service Unavailable:源站過载、進程池打满、資料库连接耗尽,或正在维護。带 Retry-After 时應重点记錄该值。
  • 连接层错誤:超时、连接重置、握手中断。日誌里可能只顯示無法连接,连狀態碼都拿不到。

三類信号的排查方向不同:429 看限流規則,503 看容量與负载,连接层错誤看網絡與服務器稳定性。混在一起看,很容易把 429 当成服務器故障去扩容。

按小时聚合,而不是只看總量

把抓取日誌按小时或按十分钟聚合,观察错誤集中出現的时段。如果错誤只出現在整点或凌晨,優先看定时任務、备份、日誌切割;如果全天均匀出現,則更像限流阈值設定偏低或並發上限過紧。

核對顺序

  1. 確認日誌時間戳的时区與服務器、CDN 控制台一致,避免把两段错開的時間当成同一事件。
  2. 統計 429 與 503 的占比、集中时段和涉及的 URL 范围,判断是入口頁還是全站。
  3. 用同一时段的其他請求做對照,看看普通用戶是否也遇到同样的限流或超时。
  4. 检查 CDN、WAF、反向代理的限流配置,包括單 IP 速率阈值、並發连接數、突發流量拦截規則。
  5. 检查源站的定时任務、批量導入、图片處理、全量缓存刷新等是否與抓取高峰重叠。
  6. 检查 Sitemap 的分片數量與提交频率,是否在短時間内集中推送了大量新 URL。
  7. 检查内鏈结构在近期是否發生過改版,導致蜘蛛需要重新發現大量路径。

几個容易踩的坑

只看抓取總量

抓取量下降但错誤率正常,可能是站点内容更新變少或入口结构稳定,抓取自然收敛,不一定是故障。反之,抓取量没變但 429 占比升高,說明限流已经在生效,只是還没到影响總量的程度。

用 UA 黑名單處理限流

把搜尋蜘蛛整体封禁来解决限流,短期看似服務器轻松了,長期會让正常的 URL 發現和内容更新同步變慢。更稳妥的做法是調整阈值和並發,而不是一刀切拒绝。

忽视 Sitemap 提交节奏

Sitemap 是入口,也是触發器。一次提交過多新 URL,容易在短時間内形成抓取請求高峰,叠加站内其他流量後触發限流。分片提交、控制新增 URL 的批次大小,比事後調阈值更省事。

退避是服務端與調度端之間的协商结果。恢复通常需要一段時間,具体节奏不由單方面控制。

調整时優先保住的几件事

  • 保持首頁到内容頁的点击路径稳定,避免入口在短時間内反复變動。
  • Sitemap 分片清晰、地址可訪問,更新時間與内容實际更新保持一致。
  • 服務器留出余量,尤其是資料库连接、進程數和带宽在高峰期的上限。
  • 监控 429、503 與连接超时的占比,把它們当作和 TTFB 同級的常規指标。

抓取节奏的恢复是渐進的。與其频繁改動配置反复试探,不如先把限流規則、源站负载和入口提交节奏這三件事確認清楚,再观察几天日誌變化。