再次向大家致歉!網站故障給您帶來麻煩了!請諒解!
經過分析,確認4月16日下午15:30~18:00的網站故障是由兩種類型的System.Data.SqlClient.SqlException (0x80131904)異常引起的。
一個是System.Data.ProviderBase.DbConnectionPool.GetConnection超時;
一個是在System.Data.SqlClient.SqlDataReader.Close()時被RDS服務器強迫關閉了TCP連接。
詳細錯誤信息如下:
中文版錯誤信息:
System.Data.SqlClient.SqlException (0x80131904): Timeout 時間已到。在操作完成之前超時時間已過或服務器未響應。
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 NBearLite.Database.CreateConnection(Boolean tryOpenning)
在 NBearLite.Database.ExecuteReader(DbCommand command)
System.Data.SqlClient.SqlException (0x80131904): 在從服務器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 遠程主機強迫關閉了一個現有的連接。)
在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
在 System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
在 System.Data.SqlClient.TdsParserStateObject.ReadByte()
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlDataReader.CloseInternal(Boolean closeReader)
在 System.Data.SqlClient.SqlDataReader.Close()
英文版錯誤信息:
System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
at System.Data.SqlClient.SqlConnection.Open()
at NBearLite.Database.CreateConnection(Boolean tryOpenning)
System.Data.SqlClient.SqlException (0x80131904): A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error)
at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket()
at System.Data.SqlClient.TdsParserStateObject.ReadByte()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.CloseInternal(Boolean closeReader)
at System.Data.SqlClient.SqlDataReader.Close()
對於這兩中類型的異常,有兩個可能的原因:
1. 達到了RDS最大數據庫連接數限制,但當時的監測數據並沒有顯示出這種情況。(對於這個可能的原因已經采取了措施)
2. 雲服務器與RDS之間的網絡存在問題。(阿里雲明天會進一步排查這個問題)
3. RDS的數據庫鏡像引起的。(詳見網站故障公告3:應該找到了問題的真正原因)
不管是哪個原因,明天都會有辦法應對。
相關博文:
