很多站点把抓取問题归到内容或連結上,但真正让蜘蛛少来几次的,往往是服務器這一侧的表現。蜘蛛每次抓取都要等一個完整的响應,等待越久,同一時間能完成的請求就越少。抓取配額並不是一個固定數字,它和你的响應速度是联動的。
蜘蛛在服務器這一侧實际在等什么
一次抓取大致分几段:建立连接、發出請求、等待首字节、接收正文、断開。蜘蛛能感知到的主要是後两段——首字节時間(TTFB)和整体下载時間。如果 TTFB 從 200 毫秒涨到 2 秒,同样的抓取窗口里,蜘蛛能拿到的頁面數量可能只剩十分之一。
更麻烦的是超时。蜘蛛不會無限等,超過阈值就會断開,這次抓取就算失敗。失敗未必代表它認定這個頁面有問题,但會降低它對這個站的信心,表現為回訪變少、深度變浅。
三類容易被忽略的服務器信号
1. 响應時間波動
平均值好看不代表没問题。如果日誌里出現大量 1 秒以上、偶尔 8 秒以上的尖峰,蜘蛛遇到尖峰时就會超时。這種波動通常来自慢查询、缓存击穿、图片或接口同步阻塞。
2. 超时與连接中断
表現為日誌里請求量看着正常,但蜘蛛抓取频次下降。常见原因是连接池偏小、單 IP 並發限制、CDN 回源超时。给蜘蛛單獨留一档並發,比全局放開更稳。
3. 5xx 與限流响應
偶發 500、502 會被当成临时错誤,蜘蛛之後會重试;但如果持續出現,重试频率會下降。429、503 是明确的"暂时別来",可以用它做温和降速,但不要長期返回,否則被限流的路径可能長時間不再被訪問。
這些信号怎么改變抓取节奏
- 整体變慢:單位時間抓取量下降,深层頁面最先被牺牲。
- 偶發超时:重试次數增加,但有效抓取减少,等于白跑。
- 持續 5xx:蜘蛛缩短抓取窗口,先保首頁和一級栏目。
- 限流過度:新 URL 的發現和首次抓取被推迟。
影响的不只是抓多少,還有抓哪。资源紧張时,蜘蛛會優先抓它認為重要且稳定的路径,那些响應慢又反复失敗的目錄,會慢慢被排到队尾。
從訪問日誌怎么確認
- 按蜘蛛 UA 過滤請求,統計每天的請求數、獨立 URL 數、狀態碼分布。
- 看响應時間分位數(P50、P95、P99),不要只看平均值。
- 按目錄聚合,找出失敗率明顯偏高的路径段。
- 對照 Sitemap 里的 URL 清單,看哪些長期没有抓取记錄。
- 把抓取曲线和服務器监控對齐,確認是不是同一時間点開始變差。
判断顺序很简單:如果蜘蛛請求量下降的同时,服務器 P95 响應時間在上升,先修服務器,再谈内容和内鏈,顺序反了容易白忙。
可以照着做的排查清單
- 给蜘蛛来源留出獨立並發,不和真實用戶抢资源。
- 把最慢的頁面類型挑出来,先解决資料库或缓存問题。
- 静態资源走 CDN,减少回源,別让蜘蛛請求和图片請求挤在一起。
- 限流用 429 並带上 Retry-After,比直接返回 403 或 404 温和得多。
- 發布内容或改版前先压测一轮,避免蜘蛛正好赶上高峰期。
- Sitemap 更新之後繼續观察日誌,確認蜘蛛确實来了,而不是提交完就不管。
小结
抓取問题常常不在蜘蛛不想来,而在服務器没空接。把响應時間、超时和错誤率压在一個稳定区間,再配合内鏈與 Sitemap 引導,URL 的發現和重抓才會回到正常节奏。這件事没有一次做完的说法,定期看日誌、定期對照监控,比一次性優化更實际。