抓取總量高不等于抓取效果好。把日誌按小时切開之後,往往能看到某些时段的請求挤在一起、另一些时段几乎為零。這種分布直接决定了两件事:站点實际能承接多少抓取,以及抓取预算花在了哪些入口上。
為什么时段分布比總量更值得看
總量是一個匯總值,它掩盖了节律。同样是一天 20 萬次蜘蛛請求,如果集中在三四個小时内,服務器要按峰值配置;如果均匀铺開,同样的總量對资源压力小得多。更重要的是,URL 發現是有顺序的——入口頁、列表頁、詳情頁依次被訪問。当抓取集中在短時間内完成,深层 URL 往往被排到下一轮,回訪間隔就被拉長。
讀日誌時間戳之前先统一三件事
- 时区:服務器日誌多為 UTC 或本机时区,而抓取調度通常按另一個时区分布。不统一时区,會把凌晨低谷看成白天低谷。
- 粒度:按小时聚合足够看节律,按分钟聚合适合排查突發。同一份日誌混用两種粒度,结论容易自相矛盾。
- 样本:至少取连續 7 天的完整日誌,覆盖一次内容更新周期,避免把某次批量發布当成常態。
用一周样本估算可抓取容量
- 按小时統計每個蜘蛛 UA 的請求數,分离出真實搜尋蜘蛛與仿冒流量。
- 剔除明顯異常的小时:發布後回源高峰、压测、安全策略誤拦造成的大量 403。
- 對剩余小时取中位數,乘以 24,得到平稳狀態下的日請求數。
- 把這個數字與服務器可承受的峰值 QPS、带宽、資料库连接數對照,取其中最小的一項作為參考上限。
這里得到的是參考区間,不是承诺值。蜘蛛如何調度由對方决定,站点能做的是保證在這個区間内响應稳定,不出現大面积超时或 5xx。
波峰落在哪里,资源就要覆盖到哪里
如果波峰與站点的备份、批量任務、定时導出重合,响應時間會被拉長,蜘蛛可能下調抓取频次。把耗时任務挪開,或在波峰前预热缓存,比事後排查“為什么抓取變少”更直接。响應時間的波動本身,就是蜘蛛判断站点是否健康的信号之一。
容量不足时,先收入口,再谈扩容
- 確認 Sitemap 只包含需要被抓取的規范化 URL,去掉參數组合與已下线路径。
- 检查内鏈是否把大量入口指向低價值頁面,例如篩選頁、空结果頁、重复列表。
- 核對 robots.txt 與頁面 meta 是否一致,避免出現允许抓取但阻止索引的冲突声明。
- 在入口收敛之後,再评估是否需要提升服務器配置。
顺序反了會出現一種情况:容量扩了,但新增的抓取都落在重复或無效 URL 上,有效頁面並没有更快被發現。
與 URL 發現的關联
抓取容量决定了每一轮能處理多少個 URL,也决定了新頁面從产生連結到被訪問的等待時間。入口頁與列表頁通常優先,深层詳情頁排在其後。因此提升站点被發現效率的常见做法,不是堆叠外鏈數量,而是缩短入口到目标的路径层級,让每一轮抓取能覆盖更多有效頁面。
核對清單
- 日誌时区是否统一,是否與調度时区對齐。
- 是否分离了真實蜘蛛與仿冒 UA。
- 是否存在與抓取波峰重合的高消耗任務。
- Sitemap、内鏈、robots 三處入口声明是否一致。
- 容量估算取的是瓶颈項,還是最宽松的一項。
时段分布是一種观测手段,用来判断资源是否被有效使用。它不會直接改變蜘蛛的抓取意愿,但能帮你發現资源被消耗在了哪些不该消耗的地方。