San*_*an4 11 domain-name-system failover timeout
当浏览器获取给定主机名(例如 ip1 和 ip2)的多个 A 记录并且其中一个无法访问时,有人可以指导我了解有关确切浏览器行为的信息。
我对确切的细节感兴趣,例如(但不限于):
现在让我们假设浏览器首先尝试使用 ip2。
当然,这一切都可能取决于浏览器,也可能因版本和平台而异,我很乐意提供最多的细节。
这样做的目的 - 我试图了解当使用基于循环 DNS 并且其中一台主机出现故障时,用户会体验到什么。
拜托,我不是在问 DNS 负载平衡有多糟糕,请不要回答“不要这样做”、“这是一个坏主意”、“您需要心跳/代理/BGP/任何东西”等等。
毕竟,我必须自己做“研究”。这是 Chromium(版本 12.0.742.112)行为(在 ubuntu 11.04 上运行):
通常它是这样工作的:尝试 1-st ip,一旦超时(189 秒后)尝试 2-nd ip。在尝试所有 ip 之前不会给出错误消息。下一个连接将再次从第一个 ip 开始(即使它只是在一秒钟前失败并且第二个 ip 工作 - 浏览器不在乎)
一件有趣的事情 - 当用户点击取消时,TCP 连接尝试不会被丢弃 - 即当我点击取消时,在 60 秒后单击重试,页面将在 130 秒后显示(从第一次尝试开始为 189。)但是如果我单击取消并单击190 秒后刷新,该过程将从头开始。
关于原始问题中的项目:
未测试。当我们查看 chrome://net-internals/#dns 时,该博客指出 Chrome 将 DNS 缓存最多 1 分钟:
容量:100 成功条目的生存时间(毫秒):60000 失败条目的生存时间(毫秒):0
如果第一个 IP 有效,过程将相同,并且在第一次尝试时总是成功。