蜘蛛抓取的调度不是一成不变的,它更像一条会随站点状态伸缩的水管:站点响应快、错误少,管道就宽一点;响应时间开始忽快忽慢,管道就会被收窄。很多站点把抓取量下降归因于“内容不够新”或“权重不够”,但实际排查下来,问题往往出在服务器响应时间上。
蜘蛛感知到的“慢”,和用户感知的不完全一样
用户看的是页面什么时候能看见内容,蜘蛛看的是更靠前的几个节点:
- 连接建立时间:DNS 解析、TCP 握手、TLS 握手是否稳定,偶发失败会直接算作一次抓取失败。
- 首字节时间(TTFB):服务器多久开始返回响应,这一项直接决定蜘蛛要不要继续等下去。
- 整体下载时间:HTML 传输是否中途卡住、连接是否被提前关闭。
- 状态码是否干净:200 是否稳定返回,还是夹杂 5xx、超时、连接重置。
这些指标里,任何一项出现时好时坏,都会让蜘蛛对整站的抓取意愿打折扣。稳定但略慢,通常比忽快忽慢更好。
响应时间波动之后,抓取队列会发生什么
当站点开始出现间歇性慢响应,蜘蛛端常见的变化是:
- 同一时间的抓取连接数下降,单次抓取占用时间变长。
- 单位时间内能走完的 URL 数量减少,抓取队列被拉长。
- 非核心 URL 被推迟,深层次页面、分页、归档页最先被放到一边。
- 如果慢响应伴随 5xx,蜘蛛会降低访问频率,恢复需要一段时间。
也就是说,你看到的是“最近抓得少了”,蜘蛛那边发生的是“每次访问成本变高了”,这是两件事。
哪几类波动最容易被放大
- 集中出现的 5xx:数据库连接打满、缓存穿透、发布时的短暂不可用,都会让蜘蛛把整站标记为不稳定。
- 超时而非报错:连接一直挂着不返回,比直接返回错误更消耗蜘蛛的等待预算。
- 动态页慢、静态页快:站内搜索、筛选、排序这类参数页最容易拖慢平均响应,而它们往往又是自动生成、数量庞大的一批 URL。
- 高峰时段慢:如果慢响应集中在某几个时间段,多半是资源竞争,而不是代码本身的问题。
一份可以照着做的自查顺序
- 先看状态码分布:把 5xx、超时、连接重置的比例单独拉出来,看是不是集中在某类 URL 上。
- 再看响应时间曲线:平均值往往掩盖问题,重点看 P95、P99 这类尾部数值。
- 区分动态与静态:把参数页、搜索页的响应单独统计,别和文章页混在一起。
- 检查缓存命中:静态资源、列表页、详情页的缓存策略是否一致。
- 查看发布窗口:上线、清缓存、重建索引的时间段,是否正好和抓取失败高峰重合。
- 确认 robots.txt 与 Sitemap 可正常访问:这两个文件本身如果响应慢,会连带影响整站的抓取判断。
抓取量下降时,先别急着加内容,先确认蜘蛛每次来访是不是都能顺利拿到一个干净的 200。
稳定性恢复之后,别忘把 URL 发现补回来
响应恢复正常,并不意味着抓取量会立刻回到原来的水平。蜘蛛重新提高访问频率需要一个过程,这段时间里,站内可以做几件事:
- 用内链把重要页面重新抬到点击距离较近的位置,尤其是之前被推迟的深层次页面。
- 确认 Sitemap 里的 URL 都能返回 200,不要混入重定向地址或已经失效的地址。
- 新发布的页面,尽量从已有且抓取稳定的页面链过去,而不是只挂在 Sitemap 里等着。
- 观察一段时间的抓取分布,确认恢复是全面的,而不是只回到首页和列表页。
服务器稳定性是抓取的基础条件,它不像内容更新那样有立竿见影的反馈,但一旦出现波动,影响会体现在整站的抓取分布上。把响应时间、状态码、超时比例当成长期观测指标,比事后补救要省力得多。抓取能否增加、页面能否被收录,最终仍取决于搜索引擎的判断,站点能做的,是把这些基础项保持在可预期的状态。