GitHub揭露8月大當機原因,基礎設施容量未跟上使用成長

GitHub週四(8/20)公佈 8月17日大規模服務中斷事故調查結果,指出事故並非程式或組態變更造成,而是基礎設施容量未能跟上平台使用量成長。當天流量創下新高後,美國中部資料中心一項關鍵元件超出負荷,最終造成多項服務中斷7小時47分鐘。

這起事故影響 GitHub網站、身分驗證、GitHub Actions、API、Pull Request、Issues及Copilot等服務。GitHub表示,容量壓力從最初發生問題的元件擴散至其他系統,造成身分驗證失敗及多項服務異常。復原期間,部分Copilot服務又因錯誤觸發客户端重試,進一步增加流量,因此較其它服務花費更長時間恢復。

GitHub近期使用量快速增加,今年4月至今,每月commit數量已從14億次增至29億次,合併的Pull Request及新建儲存庫數量也持續成長。GitHub坦言,這些成長可以解釋系統承受的壓力,但不能作為當機的理由,問題在於未能在需求超過容量前完成關鍵元件擴充。

這也是GitHub本月第二起重大事故, GitHub Actions 才於8月6日發生服務故障。GitHub表示,兩起事故的核心問題都是容量不足,而非程式或組態變更。

為因應使用量成長,GitHub今年已增加超過300萬個CPU核心、120PB高速儲存空間及網路容量,並加速將工作負載移至微軟Azure。目前約58%的GitHub平台負載由Azure承擔,遠高於今年5月的12%;此外,約一半的Git操作也已由Azure處理。

GitHub也將進一步隔離關鍵系統、減少服務間的共同相依性,並統一設定服務間的重試上限及逾時機制,避免系統發生問題時因大量自動重試形成連鎖負載。