我有一個多線程的Windows服務,我用VS 2010(.NET 4.0)從一個緩慢的服務器開發了可從幾隨時隨地有幾十個線程,每個線程檢索數據通過互聯網,然後使用本地數據庫記錄此數據(因此該過程是Internet連接的,而不是LAN或CPU綁定的)。多個同時SQL連接超時在多線程Windows服務
有一定的規律性,我得到一個洪水/亂舞/同時從多個線程爆了以下錯誤:
System.Data.SqlClient.SqlException(0x80131904):超時過期。操作完成之前超時的時間或服務器沒有響應。
此錯誤的調用堆棧通常是:
在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()
我不是指定連接字符串中連接超時,還有其他的應用程序和進程在該數據庫的工作。有沒有人遇到過這種行爲,如果有的話,做了什麼來阻止它?
最常調用的方法在我的數據訪問層看起來是這樣的,所有我的其他DAL方法遵循相同的方法:
using (SqlConnection con = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand("AddGdsMonitorLogEntry", con))
{
cmd.CommandType = CommandType.StoredProcedure;
/* setting cmd.Parameters [snipped] */
// We have been getting some timeouts writing to the log; wait a little longer than the default.
cmd.CommandTimeout *= 4;
con.Open();
cmd.ExecuteNonQuery();
}
非常感謝!
編輯
鑑於有關此方面的鏡像環境中發生的意見,我的確應該提到的是有問題的數據庫鏡像。它在SSMS中標記爲「Principal,Synchronized」,在「沒有自動故障轉移(同步)的高安全性」模式中。
編輯11年5月26日
我看到什麼在SQL Server日誌來說明任何問題。 (我沒有訪問Windows事件查看器的服務器上,但我問的人找我。)
我也看到完全相同的問題,使用相同的堆棧跟蹤。它連接的數據庫是鏡像的,連接字符串指定了故障轉移夥伴。我一直無法從本地桌面重現相同的問題,打開一堆連接並從不關閉它們會產生不同的異常消息。 – BrandonAGr 2011-05-13 20:05:31
這些鏈接報告類似的問題,但沒有提供解決方案:[1](http://stackoverflow.com/questions/3140738/why-timeout-may-occur-in-sqlconnection-open)[2](http: //blog.brianhartsock.com/2009/09/29/interesting-sql-server-mirroring-problem/)[3](http://social.msdn.microsoft.com/Forums/en/sqldatabasemirroring/thread/918e4a7f -1fc5-4679-958f-4c4f07b6ae76)[4](http://social.msdn.microsoft.com/Forums/en/adodotnetdataproviders/thread/e93fae99-a832-407f-9e80-f7a27b1c6194)[5](http:/ /social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/d3798fe7-fc7f-45aa-87ca-cd365abc4b55) – BrandonAGr 2011-05-13 20:11:36
我認爲問題不在於連接,客戶端或數據庫。但在查詢執行。驗證它們,例如收集統計信息SP /查詢更頻繁地引發異常 – abatishchev 2011-05-15 14:11:45