站点维護、發布或带宽被打满的时候,服務器偶尔吐几個 5xx 是常事。很多人只關心「頁面能不能打開」,但蜘蛛看到 5xx 之後的反應,跟看到 404 完全不同:404 是明确告诉你這個地址没了,5xx 是「我現在不知道發生了什么,等會儿再来」。這個差別會直接影响接下来几天的抓取节奏。
5xx 為什么比 404 更值得警惕
404 是一個确定答案,蜘蛛记下来之後一般會降低對该 URL 的訪問,把配額让给別的地址。5xx 是不确定答案,蜘蛛既不能把頁面從索引里剔除,也不能認定内容已经變化,只能保持原状並安排重试。抓取被推迟,但頁面仍然占着队列位置,時間一長,新舊頁面的更新都會變慢。
如果 5xx 是整站范围的——比如資料库连不上、反向代理配置寫错——影响就不是几個 URL,而是所有還没抓的地址都撞在同一堵墙上。
蜘蛛遇到 5xx 之後會做哪些動作
- 短間隔重试:單次抖動通常會被很快重试,多數情况下不會留下長期影响。
- 降低抓取速率:连續出現 5xx,蜘蛛會認為服務器扛不住,主動放慢對该主机(含同域名下的其他目錄)的請求频率。
- 减少新 URL 發現:抓取通道被失敗請求占着,新連結進入抓取路径的速度會跟着變慢。
- 保留舊快照:已收錄頁面不會因為几次 5xx 就消失,但内容更新會滞後。
降频會蔓延到整站
抓取限速通常按主机维度生效,而不是按目錄。某個接口或某個分類頁持續 5xx,被拖慢的可能是首頁、文章頁和新發布的 URL。這就是為什么局部故障经常表現為「整站收錄變慢」。
還有一種常见情况:服務器返回 5xx,但错誤頁本身返回的是 200,或者错誤提示被做成了软 404。蜘蛛看到的是「這個 URL 現在是一篇提示頁」,處理起来比單纯的 5xx 更麻烦。
恢复期该按什么顺序處理
- 先確認 5xx 的比例和分布,是集中在某個目錄、某個接口,還是全站范围。
- 修好根因後再看日誌,確認失敗請求确實在下降,而不是被缓存掩盖了。
- 不要立刻反复提交 URL,抓取速率恢复需要時間,提交量過大反而加重服務器负担。
- 检查 Sitemap 里是否混入了會触發 5xx 的地址,先清理,再让它承担分發作用。
- 對稳定下来的重要頁面,用站内連結保證它們仍留在抓取路径上。
怎么区分抖動和故障
看三個信号:5xx 持續的時間、覆盖的 URL 數量、以及是否伴随响應時間飙升。几分钟内几個 URL 的零散 5xx,一般不用特別處理;持續十几分钟以上、覆盖多個目錄的 5xx,就值得当成事故来對待。
日常可以留意服務器日誌里蜘蛛請求的狀態碼分布,以及同一时段的平均响應時間。把這几個數字放在一起看,比單看「今天被爬了多少次」更有意义。
服務器不稳定时,最贵的往往不是那几個失敗請求,而是蜘蛛對整個站点的信任被調低之後的那段時間。
抓取节奏是慢慢建立、也會慢慢恢复的東西。5xx 處理得干净,蜘蛛回来的速度通常比想象中快;拖着不修,降频的影响會一直延續到下一個稳定的抓取周期。