網站收錄

5xx、429 和超时:服務器临时故障时,收錄會受什么影响

服務器抖動、限流、超时並不等于頁面失效,蜘蛛主要按狀態碼语义决定是否重试。本文拆解 2xx、3xx、4xx、5xx、429 在抓取與收錄中的不同含义,說明單次失敗與持續失敗的区別,並给出一條從日誌排查到修复的自查顺序。

網站收錄

5xx、429 和超时:服務器临时故障时,收錄會受什么影响

服務器偶尔抖一下,頁面打不開,蜘蛛會怎么记帳?很多人一看到 5xx 就慌,担心頁面马上從索引里消失;也有人把 404 和 503 混着用,结果让本来只是临时故障的頁面被当成永久不存在。這两種做法都容易让收錄出現不必要的波動。

先分清三類狀態:临时、永久、被限流

蜘蛛判断一個 URL 值不值得再回来,主要看返回的狀態碼语义,而不是你心里的想法。

  • 2xx:抓取成功,内容進入解析流程。抓到了不等于收錄,但至少流程正常。
  • 3xx:跟着跳轉繼續走,鏈路過長或出現循环會被放弃。
  • 4xx:多數被理解為“這個地址不對”。404、410 属于明确的永久信号,反复出現會让 URL 逐步登出抓取队列。
  • 5xx:服務器端問题,属于临时性失敗,通常會被重试。
  • 429:請求過多,是限流信号,蜘蛛一般會降低訪問频率,而不是認定頁面失效。

一次失敗不會让頁面掉出索引

單次 5xx、超时或连接被拒,通常只是“這次没抓到”,蜘蛛會在後續排期里重试。真正麻烦的是持續性:如果同一批 URL 在較長時間里反复返回 5xx 或超时,常见的後果是抓取频率被压低、這些頁面的更新迟迟不被發現,索引里的版本越来越舊。是否會被移除,取决于失敗持續多久、范围多大,以及這個 URL 本身的重要性,没有一個固定天數可以套用。

把 5xx 当成 404 用,是自查时最常见也最亏的一種寫法。

维護頁该用 503,而不是 404

停机维護、資料库临时不可用,返回 503 並带上 Retry-After,比返回 404 或 200 的空壳頁更符合语义。返回 404 會被理解為頁面永久消失;返回 200 的空頁則容易變成软 404,两種情况都會影响索引里這一頁的去留。

429 通常不是坏事,但要看谁在挨打

CDN、WAF 或限流規則如果對所有来訪者一视同仁,蜘蛛很可能也吃到 429 或 403。短時間内問题不大,長期如此,抓取量會明顯下滑,新頁面被發現的节奏也會被拖慢。可以检查是否给已驗證的爬虫留了正常通道,以及 Retry-After 是否被正确下發。

自查顺序

  1. 從服務器日誌里按狀態碼分组,看看 5xx、429、超时各自占爬虫請求的比例,以及集中在哪些时段、哪些 URL。
  2. 對比出問题的 URL 是否属于同一類模板或同一台後端机器,先排除局部故障。
  3. 看抓取統計里請求量和响應時間的趋势,確認是短期波動還是持續恶化。
  4. 检查 CDN、WAF 規則、證书和跳轉配置,這些地方最容易在改版後誤伤爬虫。
  5. 修复後不必急着做額外動作,正常重试會逐步恢复;如果某個重要頁面長期没被重新抓取,再考虑從内鏈或站点地图重新提交。

几個容易踩的点

  • 把後端报错统一包装成 200 的空白頁,等于制造软 404,比直接报 5xx 更难排查。
  • 用 404 處理所有異常,會把临时故障寫成永久信号。
  • 只在高峰期限流爬虫,等于让抓取總在失敗时段進行。
  • 證书過期、DNS 解析失敗這類問题,日誌里可能连狀態碼都没有,需要單獨盯监控。

狀態碼是站点對蜘蛛说的“话”。说清楚是临时還是永久,比修好之後反复提交更有效。收錄的恢复通常跟着抓取恢复走,急不来,把错誤率压下去就是最直接的推進。