## 现象是什么
网站迁移到新服务器,解析已切换,监控与自己的测试一切正常,但客服持续接到部分用户"打不开"的反馈,持续几小时到一两天逐渐消失。这不是新服务器的问题,而是 DNS 的分布式缓存机制在过渡期的正常表现:全球的递归服务器各自缓存旧记录,TTL 到期才重新查询,各地刷新进度不同,新旧两版答案在互联网上并存了一段时间。
## 背后原理
DNS 是多层缓存的体系:用户电脑、路由器、运营商递归服务器、公共 DNS,每一层都可能持有旧记录,过期时间由记录的 TTL 字段决定。切换解析的那一刻,权威服务器上的答案变了,但已缓存的旧答案还在各地的缓存里"合法存续",直到各自 TTL 到期。默认 TTL 较长时,比如一天,切换后的最长不一致窗口就是接近一天。你测的是新答案,部分用户拿的是旧答案,两边都是"对的",这就是时间差的本质。
## 正确操作:TTL 提前降值
规范做法把迁移分三段。准备段:切换前至少一个旧 TTL 周期,把 TTL 降到三百秒,让全网缓存的旧记录逐步换成短 TTL 版本。切换段:修改解析到新 IP,此时全网缓存最多五分钟后过期,不一致窗口被压缩到几分钟级。收尾段:业务稳定后把 TTL 调回正常值,减少查询压力。已经切了才开始处理的情况,缩短窗口的手段有限,能做的是确保旧服务器在过渡期保持服务——旧答案指向的旧机器还在正常响应,用户就无感,这是比调 TTL 更实用的兜底。
## 验证与排障
验证用多视角查询:不同公共 DNS 各查一次,比对返回的 IP 分布;让异常用户改用指定 DNS 测试,确认是缓存问题。过渡期判断异常归因的三问:用户拿到的是旧 IP 还是新 IP(让他 ping 域名或用查询工具);对应的服务器是否正常服务;TTL 是否已过期。多数"部分用户异常"落在第一问——旧缓存未过期,等就是唯一解。
**收尾。**迁移文档里固定三件事:TTL 降值的时间点、旧服务器保留的时长(建议不少于一周)、多视角验证的清单。顺云云服务器承接迁移项目时,把 DNS 时间差提前写进切换方案与客服口径,"部分用户暂时异常"从故障降级为预期内现象,沟通成本与排查成本一起省掉。