搜索抓取

抓取速率被调低之后:响应时间、错误率与恢复的先后顺序

日志里蜘蛛请求量突然下滑,多半不是内容问题,而是抓取调度端根据响应时间、5xx 占比和连接稳定性下调了抓取速率。本文说明如何核对这几类信号,以及应当按什么顺序把抓取速率恢复回来。

搜索抓取

抓取速率被调低之后:响应时间、错误率与恢复的先后顺序

日志里经常能见到这样的情况:一个站点前一周每天还有几千次蜘蛛请求,这周突然掉到几百次,页面结构没动,内容也在正常更新,抓取却像踩了刹车。多数时候这并不是被惩罚,而是抓取调度端根据服务端的实际表现,下调了对这个站点的抓取速率。它和抓取预算是两个概念:预算决定愿意花多少,速率决定每次花多快,两者叠加起来,才决定了日志里看到的请求量。

抓取速率不是固定值

搜索引擎不会给每个站点写死一个抓取频率,它更像一个实时协商的过程:先按相对保守的速率试探,观察响应时间、状态码分布、连接是否稳定,再决定加快还是放慢。同一个域名,在服务器状态好的月份和状态差的月份,抓取量可能相差好几倍。所以当你发现抓取量下滑,第一步不是去改内容,而是回头看服务端在那段时间里发生了什么。

影响速率的几类信号

响应时间与超时

响应变慢是最常见的诱因。当大量请求的响应时间从两三百毫秒涨到两三秒,调度端不会继续用原来的并发去压,而是主动收敛。页面本身的内容质量在这里几乎没有参与,纯粹是服务端给不给得出及时响应。值得注意的是,平均响应时间好看不代表没问题——一个被慢查询拖住几秒的接口页,就足以让这批请求整体被降速。

5xx 与连接中断

如果说慢是劝退,那 5xx 和连接被重置就是劝停。短时间内集中的 500、502、503,会让调度端判断这个站暂时不适合抓取,把速率压到很低甚至临时暂停,过一段时间再回来试探。更麻烦的是这种信号会累积:一次数据库抖动、一次发布瞬间的过载,可能让之后的几天都处在低速抓取状态。相比之下,返回 404 并不属于这类信号,它只是告诉蜘蛛这个 URL 不存在。

资源与并发

媒体文件、大体积 JS 和 CSS 同样占用抓取资源。如果一个页面的渲染依赖几十个零散资源,且这些资源的响应都很慢,拉低的是整站的抓取体验。把静态资源交给 CDN、给它们设置足够长的缓存头,往往比优化 HTML 本身的收益更直接。

先确认是不是速率被调低了

在动手改之前,先做一次简单的核对,避免把正常的抓取波动当成故障:

  • 把日志按天统计蜘蛛请求数、平均响应时间、5xx 占比,看三条曲线是否同时出现拐点;
  • 检查下滑期间是否有过发布、扩容、CDN 切换、证书更新等操作;
  • 区分路径:是整站所有路径都变少,还是只有某个目录变少,后者更可能是结构问题而非速率问题;
  • 确认服务器没有对蜘蛛做过激进限速或封禁,包括 WAF 规则和防火墙阈值。

如果统计下来是 5xx 上升、响应变慢、请求量下降同时出现,基本可以判断是速率被主动调低了。

恢复的先后顺序

不少人会在这时候去改 Sitemap、加内链、堆内容,希望把抓取量拉回来。顺序反了。抓取速率的恢复取决于服务端信号变好,内容层面的改动在这个阶段几乎不起作用。相对合理的顺序是:

  1. 先把错误率压下去。找出报 5xx 的具体 URL 和触发条件,是超时、是内存、还是连接池打满。哪怕只修掉最主要的一类,效果也比到处优化明显。
  2. 再把响应时间拉回稳定区间。加缓存、覆盖慢查询、把动态页面静态化,目标是让大多数请求落在几百毫秒内,且波动小。
  3. 让稳定性维持一段时间。不要在刚修完的当天就期待请求量回来,调度端需要一段时间的正常样本才会重新提速。
  4. 最后才是内容层面的铺垫。等速率回升之后,用 Sitemap 和内链把重要页面重新推到抓取路径上,效率才高。

两个容易被忽略的点

第一,速率下调往往不是针对你,而是调度端对整体表现的默认反应,不必去猜是不是被人工处理了。第二,恢复是渐进的,先回来的是首页和列表页这类高频路径,深层页面会更晚,判断恢复情况时不要只盯着总请求数。

把抓取速率的波动当成一个服务端健康指标来看,很多疑问会变得清楚:它反映的通常不是内容好不好,而是服务器在那几天里,能不能稳定、快速地回应每一次抓取。