很多站点运营者排查抓取问题的顺序是先看内容、再看链接,最后才想起来看服务器。但在蜘蛛这一侧,它拿到的第一个东西不是标题和正文,而是响应码和响应耗时。这两个指标会直接影响它下一次来的时间和规模。
蜘蛛抓取本质上是排队请求
对蜘蛛来说,一个站点就是一组 URL。它在自己的队列里为这些 URL 安排请求,而请求返回的结果会反过来调整队列的处理方式。服务器表现得越稳定,它越愿意在这台主机上多派一些请求;一旦发现响应忽快忽慢或者大量报错,它会主动收紧,把抓取资源挪到别处。
响应时间:平均值参考价值有限
看监控时,平均响应时间几百毫秒并不代表没问题。更值得关注的是慢的那一批,也就是 P95、P99 这类分位数。因为蜘蛛拿到的是某一次具体请求的耗时,一次 8 秒的响应和一百次 200 毫秒的响应,在它的体验里是两件事。
- 页面的数据库查询是否偶尔被打满;
- 模板里的外部接口调用有没有超时兜底;
- 是否总有一批页面明显比别的慢。
如果慢的恰好是你希望被发现的列表页或详情页,影响会更直接。
超时与 5xx:容易被读成“暂时别来”
持续的 5xx 通常意味着服务端出了问题。对蜘蛛来说,这类响应不是内容问题,而是“现在不适合抓”。它一般不会理解成页面消失,但会降低在这台主机上的请求频率和并发。更麻烦的是恢复之后,频率回到原有水平需要时间,不会因为你修好的当天就立刻回位。
超时同理。不同蜘蛛的超时阈值不一样,共同点是:你控制不了它等多久,只能控制自己多久返回。与其去猜阈值,不如把慢接口从首屏 HTML 里摘出去,让主体结构先返回。
429 和限流:可以拦,但要留出恢复空间
用限流保护源站是合理的,不过要注意两点:
- 限流应该是偶发触发,而不是常年生效。长期返回 429,效果上接近持续压低可抓取量。
- 被限流的应当是真正耗资源的路径,而不是整站一刀切,否则正常页面也会被一起拖慢。
站点侧可以做的几件事
- 给重要页面做缓存或静态化,让列表页、详情页的首字节尽量平稳。
- Sitemap 里的 URL 要能稳定返回 200,如果混着超时页和重定向页,等于自己给抓取制造噪声。
- 看日志时按状态码和耗时分组,而不是只看总量。总量没变但 5xx 变多,是更需要注意的信号。
- 内链指向的页面尽量稳定可渲染,别让蜘蛛顺着链接一路走到慢页上。
- 扩容或迁移安排在低峰期,避免抓取密集时段出现整体抖动。
蜘蛛对站点的印象不是某一次抓取形成的,而是一段时间内响应表现的平均值。稳定比峰值快更值钱。
别把服务器问题当成内容问题
抓取量下滑时,很多人第一反应是内容质量下降或者结构改动。但如果日志里同时出现耗时拉长、超时增多,那多半是服务端这一层先变了。先确认响应时间、错误率和限流规则,再去讨论 URL 发现和内链结构,顺序会顺很多。