搜尋抓取

服務器抖動與蜘蛛重试:5xx、连接中断和 Retry-After 對抓取路径的影响

蜘蛛抓取不是一次請求就結束。当服務器返回 5xx、连接被重置或响應不完整时,蜘蛛會根據错誤類型决定重试、降频還是暂时放弃。本文讨论這些情况下抓取路径如何續接,以及运营侧该排查哪些服務器與日誌信号。

搜尋抓取

服務器抖動與蜘蛛重试:5xx、连接中断和 Retry-After 對抓取路径的影响

蜘蛛抓取是一個按 URL 排队的過程。入口頁、列表頁、内鏈和 Sitemap 提供待抓队列,蜘蛛逐個請求。如果某個 URL 請求失敗,影响的不只是這個頁面,還可能影响它後面的連結發現。

5xx 和 4xx 對蜘蛛不是一回事

4xx 通常表示 URL 本身不可用,比如 404、410。蜘蛛會較快把這類 URL 從待抓队列里降低優先級,Sitemap 里的 404 也會被逐渐忽略。5xx 不一样,它表示服務器临时或持續故障,蜘蛛通常不會立刻認定頁面消失,而是保持观察,可能稍後重试。

常见的 5xx 包括 500 内部错誤、502 網關错誤、503 服務不可用、504 網關超时。對蜘蛛来说,這些都可能意味着“現在抓不到,但以後可能恢复”。如果站点大面积返回 5xx,蜘蛛會降低對整站的抓取频率,抓取路径會變窄。

503 與 Retry-After 的配合

503 是蜘蛛比較熟悉的临时不可用狀態。如果服務器同时返回 Retry-After 头,告诉蜘蛛多久之後再来,蜘蛛會把這個信号纳入重试計划。没有 Retry-After 时,蜘蛛也會自行退避,但节奏由搜尋引擎决定,站点控制力更弱。

注意,不要把 503 当成長期屏蔽手段。長期返回 503 可能让蜘蛛减少抓取,甚至影响已收錄 URL 的重新訪問。维護窗口短、可预期时用 503 加 Retry-After 相對合适;長期不可用應考虑其他方案。

连接中断與响應不完整

除了狀態碼,TCP 连接被重置、TLS 握手失敗、响應头收到一半断開、HTML 不完整,也會被蜘蛛视為抓取失敗。這類問题不會在 HTTP 狀態碼里留下明确记錄,但在服務器日誌或抓取統計里能看到異常。

  • 连接重置:常见于防火墙、负载均衡超时、後端進程崩溃。
  • 响應不完整:常见于 HTML 体积過大但连接提前關閉,或動態輸出中途报错。
  • TLS 错誤:證书鏈不完整、协议版本不匹配,會让整個站点的抓取路径從入口就断掉。

這類错誤如果集中在某個 IP、某個 CDN 节点或某個時間段,运营侧應先查服務器和網絡层,而不是改内鏈或 Sitemap。

重试與抓取路径的關系

蜘蛛重试某個 URL 时,不等于它會立刻再次抓取。重试通常有間隔和次數限制。期間,這個 URL 後面的内鏈可能没有被發現,列表頁翻頁也可能停在失敗的那一頁。

如果失敗的是列表頁或分類頁,影响會放大。因為這類頁面承担發現下一层 URL 的作用。建议:

  1. 核心入口頁保持稳定,避免高峰期返回 5xx。
  2. 分頁連結尽量用可抓取的 a 标簽,减少對 JS 的依赖。
  3. Sitemap 保留稳定 URL,不要频繁加入临时故障 URL。
  4. 服務器日誌按狀態碼和响應時間分组,观察 5xx 是否集中在特定路径。

蜘蛛降频後怎么恢复

如果蜘蛛已经因為 5xx 降频,恢复需要時間。先修好服務器,确保连續一段時間返回 200。然後观察日誌里蜘蛛請求是否逐步恢复。可以检查:

  • 入口頁和 Sitemap 是否可正常訪問。
  • 服務器响應時間是否稳定,不要再出現大量超时。
  • 重要頁面是否仍然在内鏈中可達。
  • Sitemap 是否只包含 200 狀態、可正常返回的 URL。

不要為了“催”蜘蛛而频繁提交或制造大量新 URL。服務器不稳定时,增加 URL 只會让抓取队列更拥挤。

运营侧的最小检查清單

遇到抓取路径變窄,可以按下面顺序排查:

  1. 看服務器日誌中 5xx、499、连接重置的比例。
  2. 確認 CDN 和 WAF 没有誤拦蜘蛛,尤其是 403、429。
  3. 检查核心入口頁是否在合理時間内返回完整 HTML。
  4. 確認列表頁、分類頁的分頁連結没有断。
  5. 對照 Sitemap,確認没有大量 404 或 5xx URL。
  6. 观察一周抓取量變化,不要只看單日波動。

服務器稳定性是抓取路径的地基。狀態碼、连接质量和响應時間,都會影响蜘蛛能不能顺着内鏈繼續走。把這些基础項守住,比事後补救更有效。

蜘蛛不會因為一次失敗就永遠放弃,但持續不稳定會让它降低訪問频率。抓取路径的恢复,通常從服務器恢复稳定開始。