针对本月初的 Azure 服务宕机大约 1 小时,微软近日披露原因是因为域名系统(DNS)请求激增加上代码缺陷造成的。用户报告称在北京时间 4 月 2 日 3 点 21 分至 4 点期间,Azure Portal、Azure Services、Dynamics 365 和 Xbox Live 均无法访问。微软表示大部分服务已经在 4 点 30 分前恢复。
虽然微软很快就确认了此次故障与其 DNS 功能有关,但该公司 4 月 4 日公布的最终根源分析更多地揭示了原因是其 DNS 服务中一个之前未被发现的代码缺陷,该缺陷是由 DNS 客户端过度重试引发的。微软表示:“Azure DNS 服务器经历了来自全球各地针对 Azure 上托管的一组域的 DNS 查询的异常激增”。
微软表示:“通常情况下,Azure的层层缓存和流量整形会减轻这种激增。在这次事件中,一个特定的事件序列暴露了我们的DNS服务中的代码缺陷,降低了我们DNS Edge缓存的效率”。
由于DNS客户端重试请求,微软的DNS服务被淹没,这进一步增加了服务的压力。微软指出,DNS客户端重试被认为是合法的DNS流量,因此这些流量并没有被微软的体积缓解系统丢弃,进而降低了其DNS服务在多个地区的可用性。微软表示,它通过更新体积尖峰缓解系统的逻辑来缓解这一问题,以保护DNS服务免受过度的客户端重试。