TTL 是什么
TTL 是解析记录在各级缓存中允许存活的秒数:递归解析器拿到答案后会在本地保留这么久,期间再次查询直接返回缓存结果。值越小,变更后各地收敛越快,但权威服务器承受的查询压力越大;值越大缓存友好,但变更生效更慢。计划切换类变更时,提前把关键记录的 TTL 调低,完成后再恢复。
基本信息
| 作用 | 控制记录在缓存中的存活时长(单位:秒) |
|---|---|
| 调低场景 | 计划迁移、切换地址、故障切换类记录 |
| 调高场景 | 稳定业务,减少权威侧查询压力 |
| 最小值限制 | 免费版解析通常有最低 TTL 限制,付费版可更小 |
| 边界 | 已经缓存的旧记录只能等待其自然过期 |
| 观察方式 | dig 输出中 ANSWER 段的数字即当前剩余缓存时间 |
典型使用场景
- 域名迁移或换 IP 前,提前把 TTL 下调到较小值以缩短收敛窗口
- 灰度切换:让部分地区的递归先拿到新地址,观察效果再全网推进
- 故障切换场景需要分钟级收敛,记录平时就保持较小 TTL
- 稳定业务记录把 TTL 调大,减少权威服务器压力与查询成本
- 验证类临时记录设较短 TTL,用完即删,避免残留影响
观察当前 TTL
观察当前 TTL
dig www.example.com | grep -E 'IN' | head -5
# 输出中的数字为该条记录当前剩余的缓存时间
dig @8.8.8.8 www.example.com +noall +answer # 从公共递归视角看剩余 TTL
# 连续两次查询 TTL 递减:说明命中的是缓存而非每次回源TTL 取值参考
| 场景 | TTL 思路 | 原因 |
|---|---|---|
| 计划切换前 | 提前下调(如 60~300 秒) | 缩短旧值在各地缓存中的停留时间 |
| 切换完成后 | 逐步恢复为常规值 | 降低权威查询压力 |
| 故障切换类记录 | 长期保持较小值 | 切换需要分钟级收敛 |
| 稳定业务记录 | 较大值(如数小时到一天) | 缓存命中率高,权威压力小 |
| 临时验证记录 | 较小值 | 用完即删,避免影响后续配置 |
下调 TTL 必须提前:如果缓存里已经存着旧的高 TTL 记录,改小配置不会影响这条已缓存记录,只能等它自然过期。
切换前忘记调低 TTL 时,部分地区的客户端可能在被引用较长时间后才收敛到新地址,期间新旧地址同时有流量,回滚判断会被干扰。