非常非常抱歉!2016年3月7日15:44-16:39,由于阿里云RDS(云數據庫)故障,造成全站不能正常訪問,給您帶來了很大很大的麻煩,懇請您的諒解!
故障是在15:44開始出現的,應用日志中出現大量這樣的錯誤:
System.Data.SqlClient.SqlException (0x80131904): Logon failed for login '...' due to trigger execution. 當前命令發生了嚴重錯誤。應放棄任何可能產生的結果。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) ... System.Data.SqlClient.SqlException (0x80131904): Logon failed for login '...' due to trigger execution. A severe error occurred on the current command. The results, if any, should be discarded.
15:55,我們向阿里云提交了緊急工單。
16:16,我們懷疑是數據庫連接被RDS限制的原因,在工單中進一步提交了我們的懷疑。
16:17,20多分鐘過去,阿里云客服竟然無任何響應,而且是緊急工單。無奈之下,進行一鍵投訴。
16:19,終于有客服響應了,本以為救星出現了,哪知是火上澆油!這時我們已經確認是數據庫連接數限制的原因,可是客服的不專業讓人有理說不清,當時那種“叫天天不應,叫地地不靈”的無助讓人崩潰。
16:39,直到這時(已經過去了40多分鐘),阿里云客服才確認是數據庫連接數限制的問題并進行了調整,調整之后,立馬恢復正常。
故障原因分析:
好端端的,為什么數據庫連接數限制會被突然修改?
阿里云RDS實例對數據庫連接數有著霸道的限制,這個限制只針對連接總數,卻不區分是否活躍。對于訪問量稍微大一點的網站,RDS的默認數據庫連接數根本不夠用,因為數據庫連接池是網站應用的標配,每臺服務器都要在連接池中保持一定數量的數據庫連接,服務器越多,連接數就越多。為了解決這個問題,阿里云針對這樣的客戶對進行了特殊設置,我們就是這樣的客戶之一。但阿里云在發布RDS產品更新時,有時會不小覆蓋會這個特殊設置,之前我們也遇到過一次,這次很可能是同樣的原因。
來自阿里云的故障原因解釋:
故障是因為我們在2015年12月22日對這個RDS實例進行了升級,升級時數據庫連接數限制被自動重置為默認值(雖然我們在RDS控制臺看到的一直是特殊設置值),今天下午正好連接數超過了默認限制值(雖然我們在RDS控制臺系統資源監控中看到的連接數沒有超過默認限制值,閾值報警沒有觸發)。
對故障根源的分歧:
阿里云認為錯在我們使用了特殊設置,他們最多只需做好對特殊設置的兼容。
而我們認為錯在RDS對數據庫連接數限制的機制不合理,特殊設置是為之所迫,應該改進連接數限制機制,不要像現在這么霸道。
文章列表