SQL服务器超时 - 仅偶尔发生

时间:2010-10-08 12:53:27

标签: sql-server linq-to-sql iis-7 timeout query-performance

我有一个Web应用程序偶尔会抛出此错误......

  

异常消息:超时已过期。   超时时间过去之前   完成手术或   服务器没有响应。

当我这样做时,我无法连接到SQL服务器,即使是通过管理工作室,也说服务器超时且无法连接。

一旦我重置iis,它立即回来。所以这显然意味着它在我的代码中引起了这种情况。我有一个MVC站点,它使用Linq to SQL和SQL缓存依赖,并启用了服务代理。

我在整个代码中彻底使用了using语句,因此我确定它不是漏洞连接。阅读服务器日志会让事情变得更加混乱,因为有太多的信息和警告事件,我不是系统管理员,因此很难知道发生了什么。

首先我得到一个ASP.net 4.xxxxx事件ID 1309异常消息:超时已过期。操作完成之前经过的超时时间或服务器没有响应。错误

我认为我最后一次在我以前的服务器上通过重新启动IIS时出现此错误,这是我不想在这个新服务器上使用的。

所以我的问题是,我可以采取哪些步骤来尝试减少但理想情况下会消除此超时错误?

非常感谢任何帮助

Truegilly

1 个答案:

答案 0 :(得分:1)

这类问题通常归结为两件事之一。要么您没有正确处理您的连接,要么您有许多严重的查询完全接管您的数据库服务器。

如果您没有正确处理连接,那么IIS将很乐意保留它们直到垃圾收集运行和/或它们超时。如果你有一个非常轻微的交通网站,那么你将不会看到问题。

但是,一旦流量达到挂起的连接数超过您尝试连接数据库服务器的次数,那么,您将开始看到几个可能的错误之一。超时到期是一个。确切的错误将取决于哪个部分正在崩溃:连接池,sql server本身等。

您评论的修补程序是一个临时解决方案。随着您的流量持续增加(问题很严重),您的代码的其他区域将导致问题再次出现。