抓取量下滑时,很多人的第一反應是改内容、加内鏈、重發 Sitemap。但如果你在日誌里看到的是蜘蛛整体到訪次數變少,而不是某些頁面變少,問题往往不在内容层,而在服務器返回给它内容的那几十毫秒里。
蜘蛛對服務器狀態是有记忆的
搜尋引擎的抓取調度不是每次都從零開始。它會根據歷史抓取结果,為每個主机或目錄维護一份“健康印象”:响應快、错誤少,就愿意多来几次;超时多、5xx 多,就會主動降速,把配額挪给更稳定的站点。
這種調整通常是渐進的:先是單次抓取的並發降低,再是抓取間隔拉長,最後才是整体抓取量明顯下滑。所以当你在报表上看到抓取量腰斩时,退让其實已经發生了一段時間。
哪些服務器信号會让蜘蛛主動退让
- 5xx 狀態碼:尤其是 500、502、504 這類源站或網關错誤。偶發几次無妨,比例一高就會被判定為站点不稳定。
- 连接超时與响應過慢:蜘蛛有自己的等待上限,超過就直接断開。断開次數多了,效果和 5xx 接近。
- 429 與 503:這两個本来就是你告诉蜘蛛“現在別来”的信号。用得好能保護源站,用得随意就等于持續劝退。
- 连接被重置、TLS 握手異常:连加密连接都建立不起来,蜘蛛拿不到任何内容,只能记為一次失敗。
把 503 当成萬能的挡箭牌是有代價的:它保護了這一次,也可能压低之後一段時間的抓取量。
排查顺序:先看狀態碼分布,再谈内容
- 從服務器日誌里按狀態碼分组,看 2xx、3xx、4xx、5xx 各占多少。重点不是绝對值,而是變化趋势。
- 再看响應時間的分位值。平均值容易骗人,P95、P99 更能反映蜘蛛實际遇到的最差情况。
- 接着看错誤集中在哪個路径:全站,還是某個接口、某類列表頁、某個 CDN 节点。
- 最後才回到内容层:Sitemap、内鏈、URL 總數是否在同期突然膨胀,把有限的抓取配額摊薄了。
顺序颠倒的常见後果是:内容改了一圈,服務器该报的错還在报,抓取量自然回不来。
几個容易被誤讀的运维動作
- 维護頁返回 200:蜘蛛看到的是“正常頁面”,内容却是一片空白,久了容易被当成低质頁面。
- 错誤頁返回 200:本该是 404 或 410 的地址返回了 200,蜘蛛會反复回来確認,浪費抓取配額。
- 限流與防爬策略過嚴:把正常蜘蛛也一起拦掉,日誌里表現為抓取量断崖,而不是缓慢下滑。
- CDN 缓存配置改動:缓存命中率變化會直接影响源站压力,也會影响蜘蛛看到的响應速度。
恢复稳定之後,抓取量不會立刻回来
服務器修好当天,抓取量通常只回升一部分。調度系統需要重新积累“這個主机是稳定的”這一判断,過程往往是几天到几周。這段時間不建议做大幅度的结构改動,否則很难分清是恢复起了作用,還是改動起了作用。
比較稳妥的做法是:保持 URL 數量稳定,让 Sitemap、内鏈和實际可抓頁面保持一致,把狀態碼和响應時間控制住,然後观察趋势,而不是盯着某一天的曲线。
抓取這件事,服務器给不出稳定答案时,内容做得再好也传不出去。先把狀態碼和响應時間這两件事守住,再看別的。