首先向大家致歉,這次雲服務器故障發現於17:30左右,18:30左右恢復正常,給大家帶來了麻煩,請大家諒解!
故障的原因是雲服務器所在的集群負載過高,磁盤寫入性能急劇下降,造成很多數據庫寫入操作超時。后來恢復正常的解決方法是將雲服務器遷移至另一個集群。
下面是故障發生的主要經過:
今天上午9:15左右一位園友通過郵件反饋在訪問園子時遇到502 Bad Gateway錯誤,見下圖:

這是由阿里雲負載均衡SLB返回的錯誤,Tengine是由阿里巴巴開發的開源Web服務器。我們猜測阿里雲提供的負載均衡服務可能是通過Tengine反向代理實現的。
這個錯誤頁面表示SLB檢測到負載均衡中的雲服務器返回了無效的響應,比如500系列錯誤。
我們將這個情況通過工單反饋給了阿里雲,得到的處理反饋是繼續觀察,可能是這位用戶的網絡線路的臨時問題導致的。
由於我們在這個時間段沒遇到這個問題,也沒有其他用戶反饋這個問題,我們也認可了繼續觀察的處理方式。
(根據我們后來的分析,出現502 Bad Gateway錯誤可能是集群出現了瞬時負載高的情況)
下午17:20左右,我們自己也遇到了502 Bad Gateway錯誤,持續了大約1-2分鍾。見下圖:

出問題期間,我們趕緊登錄到兩台雲服務器查看情況,發現IIS並發連接數增長至原來的30多倍,而Bytes Send/sec為0,而且兩台雲服務器都是同樣的情況。我們當時推斷,這兩台雲服務器本身應該沒有問題,問題可能出在它們與數據庫服務器之間的網絡通信。我們繼續將這個情況通過工單反饋給阿里雲。
剛把工單填好,我們就接到園友的電話反饋說博客后台不能發布文章,我們一測試,果然不能發布,報數據庫超時錯誤,見下圖:

但打開現有的文章速度很快,也就是說讀正常,寫有問題。趕緊登錄數據庫服務器通過性能監視器查看磁盤IO情況,果然磁盤寫入性能有問題,見下圖:


Avg. Disk Write Queue Length超過1就說明有問題了,現在平均已經到了4~5。進入阿里雲網站上的管理控制台一看,磁盤IO問題就更明顯了,見下圖:

繼續向阿里雲反饋情況,得到的反饋是這台雲服務器IOPS太高了,見下圖:

於是,阿里雲工作人員將這台雲服務器遷移至另一個集群,問題立刻解決。
