蜘蛛池知识

蜘蛛池入口頁的 DNS 解析與 TTL:換 IP 之後蜘蛛多久能找到新地址

蜘蛛抓取入口頁的第一跳是 DNS 解析,解析结果被缓存多久由 TTL 决定。本文說明 TTL 在稳定期和迁移期分別怎么设、換 IP 的标准操作顺序、多 A 记錄與 CNAME 的常见誤用,以及平时可以盯的几個检查点,帮助减少「解析没生效導致蜘蛛訪問不到」這類問题。

蜘蛛池知识

蜘蛛池入口頁的 DNS 解析與 TTL:換 IP 之後蜘蛛多久能找到新地址

蜘蛛来抓一個入口頁之前,第一步不是發 HTTP 請求,而是把域名解析成 IP。這一步通常只花几十毫秒,却决定了後面所有事情的前提:解析對了,蜘蛛才可能看到你要它看的那一版;解析缓存没更新,蜘蛛訪問到的可能是你早就下线的舊机器。

DNS 在抓取鏈路里的位置

一次抓取大致经過:解析域名、建立连接、發請求、拿响應。DNS 是第一跳,也是最容易被忽略的一跳,因為它在平时不出問题。

  • 解析结果會被缓存:递归解析器、公共 DNS、蜘蛛自己的解析节点都可能缓存一段時間。
  • TTL 决定缓存多久:设得越長,改動生效越慢;设得越短,解析請求越频繁。
  • 多 A 记錄會轮询:同一域名挂多個 IP 时,蜘蛛可能這次落到 A 机器,下次落到 B 机器。

TTL 设多少比較合适

没有统一标准,取决于你多久會動一次解析。比較稳妥的做法是分阶段處理:

  • 稳定期:几百秒到一小时都可以。入口頁數量多的时候,设長一点能减少解析压力。
  • 變動期:准备換 IP 或迁移机房之前,提前把 TTL 調到一個較短的值,让舊缓存先過期。
  • 迁移完成後:观察一两天確認没有異常,再逐步把 TTL 調回原来的水平。

需要留意的是,TTL 只是「最長缓存時間」的參考值。個別递归解析器並不嚴格遵守,所以不要指望改完解析就立刻全網生效。

換 IP 时的操作顺序

  1. 先在新机器上把站点跑起来,用 hosts 或指定 IP 的方式自测,確認頁面能正常返回。
  2. 提前把 TTL 調短,並等待至少一個舊 TTL 周期過去。
  3. 再修改解析记錄,把新 IP 加上或者替換掉舊 IP。
  4. 舊机器先別立刻關,保留一段時間,避免還有解析缓存指向它。
  5. 观察訪問日誌,確認抓取請求已经落到新 IP 上,再考虑下线舊机器。

常见誤区

  • 把多 A 记錄当负载均衡用:轮询並不判断机器是否健康,一台挂了照样會被分到流量。
  • CNAME 套太多层:解析鏈路變長,出問题时排查成本也跟着變高。
  • 只改主域名,不管 www 和其他子域:入口頁往往分散在多個子域,漏改一個就有一批頁面打不開。
  • 迁移当天才降 TTL:缓存還没過期就開始切換,等于把變更窗口人為拉長。
  • 忽略解析服務商自身的下發延迟:记錄生效慢有时候跟 TTL 無關。

平时可以盯的几個点

  • 用多個公共 DNS 分別查询同一域名,看返回的 IP 是否一致、有没有残留舊地址。
  • 记錄每次解析變更的時間点,方便和日誌里的抓取異常做對照。
  • 给入口頁域名维護一份清單:域名、解析商、目前 IP、TTL、最近一次變更時間。
  • 關注连接超时和 5xx 的比例,解析異常经常先表現為连不上,而不是返回一個错誤頁。
DNS 本身不产生内容,但它决定蜘蛛能不能到達内容。把 TTL 和變更流程管好,比事後反复排查「為什么蜘蛛不来了」要省事得多。