搜索抓取

搜索蜘蛛抓取:间歇性 5xx 返回与抓取退避后的回稳观察

服务器偶发 5xx 时,搜索蜘蛛通常会先重试,再逐步降低抓取频次。本文从抓取日志里的状态码分布入手,梳理 CDN 回源、应用进程、数据库连接等常见诱因,给出排查顺序与修复后的观察方法,帮助站点把抓取节奏拉回稳定状态。

搜索抓取

搜索蜘蛛抓取:间歇性 5xx 返回与抓取退避后的回稳观察

为什么 5xx 比 404 更影响抓取节奏

404 表示页面不存在,蜘蛛通常会较快停止访问该 URL。5xx 表示服务器暂时无法完成请求,蜘蛛会把它当作可恢复的错误:先短时间重试,如果持续失败,就会降低对该站点的抓取频次。这个过程常被称为抓取退避。退避一旦形成,恢复不是立刻的,即使服务器已经恢复正常,抓取量也可能需要一段时间才回到原有水平。

先在抓取日志里确认三件事

不要只看服务器监控。把蜘蛛访问日志和源站错误日志对照,重点确认:

  • 5xx 占比:是集中在少数 URL,还是全站随机出现。
  • 时间分布:是否与发版、备份、定时任务、流量高峰重合。
  • URL 类型:列表页、详情页、静态资源、接口路径,哪一类最先失败。

如果 5xx 集中在某类动态路径,问题往往在应用层;如果静态文件也大量 5xx,则更可能是 CDN 回源、负载均衡或网络层。

按层排查常见诱因

  1. CDN 与回源:查看回源 5xx 比例、回源超时设置、源站健康检查是否误判。CDN 缓存了 5xx 响应时,蜘蛛可能在短时间内反复拿到同一个错误页。
  2. 应用进程:PHP-FPM、Java 线程池、Node 进程是否被打满,是否出现重启或排队超时。
  3. 数据库与缓存:连接池耗尽、慢查询堆积、Redis 超时,常表现为 500 或 504。
  4. 限速与防护:WAF、限速规则、防爬策略是否把蜘蛛请求误判为异常流量,返回 503。
  5. 发布与运维操作:滚动发布、批量生成静态页、数据库备份是否造成短时不可用。

503 与 Retry-After 的使用边界

计划维护时,返回 503 并附带 Retry-After 比直接返回 500 更清晰,但不要把它当作长期挡箭牌。频繁或长时间 503 同样会让抓取频次下降。若只是单个接口抖动,优先修复接口,而不是让整站返回 503。

抓取退避是渐进的:错误持续越久,恢复越慢。修复后先保证一段时间内稳定返回 200,再观察抓取频次变化。

修复后如何观察回稳

  • 连续几天查看蜘蛛访问日志中的 5xx 比例,确认降到可忽略水平。
  • 对比修复前后的日均抓取 URL 数与抓取频次,不要只看单日峰值。
  • 检查 Sitemap 和重要内链入口是否仍能正常访问,避免错误页被缓存。
  • 如果使用 CDN,清理异常状态码缓存,并确认回源健康检查路径不会被蜘蛛大量访问。

常见误区

  • 只重启应用,不查根因,导致 5xx 反复出现。
  • 把 5xx 当成 404 处理,忽略退避对抓取预算的影响。
  • 在 robots.txt 中临时屏蔽整站,恢复后忘记移除。
  • 修复后立刻提交大量 URL,期望抓取量马上回升。

服务器稳定性是 URL 发现和抓取的基础。把 5xx 控制在低水平并保持一段时间,比短期内的各种提交动作更有效。抓取频次的恢复需要观察周期,建议以周为单位对比日志,而不是频繁调整规则。