搜尋抓取

服務器响應時間變慢时,蜘蛛的抓取节奏會怎么變

抓取量下滑,問题未必出在 robots 或内鏈。本文從 TTFB、超时比例、5xx 與日誌分布几個角度,說明服務器响應時間怎样影响蜘蛛的抓取频次、抓取深度和 URL 發現速度,並给出一份按優先級排列的優化顺序,帮助你把排查方向放在真正起作用的地方。

搜尋抓取

服務器响應時間變慢时,蜘蛛的抓取节奏會怎么變

蜘蛛抓取的本质是一次资源交換:它花時間請求你的頁面,你花带宽和 CPU 返回内容。当响應變慢时,蜘蛛並不是简單地“等一等”,而是會調整對整站的抓取安排。很多站点抱怨抓取量下降,最後查下来問题不在 robots、不在内鏈,而在服務器响應時間。

响應時間是抓取的第一道门槛

蜘蛛請求一個 URL 时,最先等待的是第一個字节返回的時間,也就是 TTFB。這個時間長期偏高,會连带出現几種情况:

  • 單次請求占用连接的時間變長,單位時間内能抓的 URL 變少;
  • 超過蜘蛛自身的超时阈值後,請求被放弃,頁面被记為抓取失敗;
  • 失敗率升高後,蜘蛛會主動降低對该目錄甚至整站的抓取频率。

換句话说,慢不會立刻表現為“不抓”,而是表現為“抓得少、抓得浅、間隔變長”。這些變化在服務器日誌里往往先出現在响應時間那一列,而不是狀態碼那一列。

蜘蛛會做哪些調整

從日誌和抓取报告里,可以观察到几種常见反應:

  • 抓取频次下降:同一批 URL 的回訪間隔從几天拉長到一两周;
  • 抓取深度變浅:蜘蛛更愿意停留在列表頁和热门頁,不再往下翻;
  • 新 URL 發現變慢:Sitemap 里的新連結要更久才會被訪問;
  • 重试增多:同一 URL 在短時間内出現多次請求,多數是超时後的重试。

這些現象叠加起来,效果和“抓取预算被压缩”很像。区別在于,预算問题是分配策略,响應時間問题是硬约束。

哪些“慢”其實不归蜘蛛管

不是所有拖慢頁面的因素都會影响抓取,需要区分開:

  • 服務器端慢:資料库查询、模板渲染、同步調用第三方接口,這些直接影响 TTFB,蜘蛛能感知;
  • 浏览器端慢:图片体积、前端脚本执行、字体加载,影响的是用戶,對只取 HTML 的抓取影响有限,但渲染阶段的资源消耗仍值得留意;
  • 網絡鏈路慢:跨境线路、CDN 回源異常,可能让部分位置的蜘蛛拿到的是超时结果或舊版本。

排查时先把這三類分開,避免在無關的地方反复改動。

用日誌判断响應時間是不是瓶颈

只看平均值容易誤判。更實用的做法是:

  1. 按蜘蛛 UA 過滤出抓取請求;
  2. 看响應時間的分布,重点看 P95 和最大值;
  3. 統計超时和 5xx 的占比,而不是只看 200 的數量;
  4. 對比抓取量下降的時間点與响應時間上升的時間点是否吻合。

如果 P95 長期處于偏高水平,且超时零星出現,基本可以判断响應時間已经在影响抓取节奏。

優化顺序

優先級大致可以這样排:

  1. 先解决超时和 5xx:這類請求對蜘蛛最不友好,也會让重试挤占正常抓取;
  2. 加缓存:對不常變的列表頁、詳情頁做頁面級或對象級缓存,收益通常最直接;
  3. 减少同步外部調用:评论、統計、推荐接口能异步就异步,別让它們挡在 HTML 前面;
  4. 保護性限流:给蜘蛛留出足够配額,避免高峰时被正常用戶流量挤到超时;
  5. 稳定發布节奏:维護窗口、批量改版尽量避開抓取高峰,减少集中失敗。

和 URL 發現配合起来看

Sitemap、内鏈和站内搜尋负责“告诉蜘蛛有哪些 URL”,服務器稳定性负责“让蜘蛛拿得到”。前者做得再细,如果响應時間不稳,URL 發現依然會滞後。比較稳妥的做法是:新内容發布後先確認關键路径上的頁面响應正常,再通過内鏈和 Sitemap 引導抓取,而不是一次性推入大量 URL。

抓取量下滑时,先看响應時間的分布和超时比例,再谈内鏈與 Sitemap,往往能少走弯路。