woshale.com
← 返回博客

DNS 查询的一百毫秒

你按下回车到页面开始加载之间,藏着一段几乎没人注意的等待:域名解析。好的时候十几毫秒,坏的时候一两秒——这一百毫秒的差距,就是"网站感觉快"和"感觉卡"的分水岭。

一场四接力赛

浏览器问"woshale.com 在哪",若本地缓存没有,会触发一条完整的接力链:根服务器("去问管 .com 的")→ TLD 服务器("去问 woshale.com 的权威 DNS")→ 权威 DNS("IP 是 106.54.185.236,有效期 600 秒")。每一跳都可能被运营商的递归缓存截胡,所以多数查询其实走不完全程。

TTL:缓慢是特性不是缺陷

解析结果带一个 TTL(存活时间),期内所有人都用缓存。这个设计让 DNS 能承载整个互联网的流量,代价是:改解析不会立即生效。迁移服务器时要提前把 TTL 调低(比如 300 秒),迁完再调回去——这是每次换机都要重温的功课。

自查指南

# 完整接力过程
dig woshale.com +trace

# 各环节耗时(重点看 Query time)
dig woshale.com | grep "Query time"

# 指定公共 DNS 对比
dig @223.5.5.5 woshale.com
DNS 的设计哲学和这个互联网的大多数底层一样:用缓存换速度,用冗余换可靠,用一点看不见的延迟,换来整个系统的健壮。

下次网站"感觉慢",先 dig 一下再怪服务器——有时候问题根本不在你的机器上,而在你和它之间那段看不见的电话簿里。

← 更多文章 聊聊这篇 →