我有一个多线程的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