站点维护、发布或带宽被打满的时候,服务器偶尔吐几个 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 处理得干净,蜘蛛回来的速度通常比想象中快;拖着不修,降频的影响会一直延续到下一个稳定的抓取周期。