針對本月初的 Azure 服務宕機大約 1 小時,微軟近日披露原因是因為域名系統(tǒng)(DNS)請求激增加上代碼缺陷造成的。用戶報告稱在北京時間 4 月 2 日 3 點 21 分至 4 點期間,Azure Portal、Azure Services、Dynamics 365 和 Xbox Live 均無法訪問。微軟表示大部分服務已經(jīng)在 4 點 30 分前恢復。
雖然微軟很快就確認了此次故障與其 DNS 功能有關,但該公司 4 月 4 日公布的最終根源分析更多地揭示了原因是其 DNS 服務中一個之前未被發(fā)現(xiàn)的代碼缺陷,該缺陷是由 DNS 客戶端過度重試引發(fā)的。微軟表示:“Azure DNS 服務器經(jīng)歷了來自全球各地針對 Azure 上托管的一組域的 DNS 查詢的異常激增”。
微軟表示:“通常情況下,Azure的層層緩存和流量整形會減輕這種激增。在這次事件中,一個特定的事件序列暴露了我們的DNS服務中的代碼缺陷,降低了我們DNS Edge緩存的效率”。
由于DNS客戶端重試請求,微軟的DNS服務被淹沒,這進一步增加了服務的壓力。微軟指出,DNS客戶端重試被認為是合法的DNS流量,因此這些流量并沒有被微軟的體積緩解系統(tǒng)丟棄,進而降低了其DNS服務在多個地區(qū)的可用性。微軟表示,它通過更新體積尖峰緩解系統(tǒng)的邏輯來緩解這一問題,以保護DNS服務免受過度的客戶端重試。