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