搜索抓取

响应时间与抓取节奏:服务器慢下来时,蜘蛛会怎么调整

蜘蛛的时间预算有限,响应时间直接决定单位时间内能抓多少页面。本文从 TTFB、后端处理与动态渲染三层拆解慢的原因,讲清超时、5xx 与 429 对抓取节奏的不同影响,并给出一套可执行的优化顺序与观察指标。

搜索抓取

响应时间与抓取节奏:服务器慢下来时,蜘蛛会怎么调整

抓取量下滑时,很多人先去看 robots、Sitemap、内链结构,却忽略了一个更基础的因素:服务器回得够不够快。蜘蛛是按时间预算工作的访客,响应时间一旦变长,它不会等你,而是把抓取配额挪到别处去。

响应时间为什么直接影响抓取量

蜘蛛单位时间里能发起的请求是有限的。同样十分钟,每个页面 200 毫秒能抓几百个,每个页面 3 秒就只能抓几十个。所以响应时间不只是性能问题,它直接决定了被抓走的 URL 数量。

更关键的是排队机制。同一时间可能只有少量并发连接在抓你的站,单个请求变慢,连接就被占住,后面的 URL 只能干等。慢的不是一个页面,而是整条队列。

蜘蛛大概会等多久

  • 几百毫秒到两秒内返回,抓取节奏通常看不出明显变化;
  • 连续超过数秒,抓取频次往往开始下滑,尤其是短时间内反复出现时;
  • 达到超时阈值,请求被放弃,日志里可能只留下一条中断记录,或者干脆什么都没有。

具体阈值各家爬虫不同,也会随站点历史表现浮动:一直稳定的站,偶尔慢一次影响有限;长期偏慢的站,会被整体降速,恢复也需要时间。

慢在哪里,要拆开看

日志里只有一个总耗时,但成因通常分几层:

  • 网络与 TLS:握手慢、回源远,CDN 未命中时最明显;
  • 后端处理:数据库慢查询,或者模板里同步调用了第三方接口;
  • 动态渲染:每次访问都现算的页面,抓得越多越慢。

建议按分位值判断,而不是只看平均值。P50 正常、P95 很慢,说明是少量 URL 拖累了整体,定位范围会小很多。

超时、5xx 和 429 不是一回事

三者都会影响抓取,但作用路径不同,处理方式也不同:

  • 超时:蜘蛛拿不到响应,通常会降低对本站的抓取频率,等站点恢复后再逐步试探;
  • 5xx:被理解为服务器端故障,连续出现时降速更明显,恢复正常抓取的时间也更长;
  • 429:是明确的“慢一点”信号,配合 Retry-After 使用,可以主动把抓取压到服务器能承受的范围,比硬撑到超时要好。

不过 429 用过头也会把蜘蛛劝退。长期只返回 429 的目录,可能被逐渐忽略,甚至在一段时间内不再被排入队列。

优化顺序:先省掉不必要的工作

  1. 让蜘蛛也走缓存,静态页和列表页尽量命中 CDN 或页面缓存;
  2. 减少首屏依赖的外部请求,特别是同步调用的第三方接口;
  3. 把重查询和复杂模板改写或预生成,不要让每次抓取都触发一遍;
  4. 检查页面在抓取时是否触发了写操作,比如计数、写日志、实时推荐计算。

调完后看哪些指标

至少对比这几项:抓取频次、平均与 P95 响应时间、超时和 5xx 占比、单次抓取的平均字节数。如果响应时间已经降下来,抓取量却没涨,那就该回头查抓取路径、内链结构和内容本身的价值,别把所有问题都归到速度上。

把响应时间压下来,是提高抓取量的必要条件,而不是充分条件。页面值不值得抓,最终仍由内容和结构决定。