1

我有一个偶尔会抛出这个错误的网络应用程序......

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

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

一旦我重置 iis,它就会立即恢复。所以这显然意味着我的代码中的某些东西导致了这种情况。我有一个 MVC 站点,它使用 Linq to SQL 和 SQL 缓存依赖项并启用了服务代理。

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

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

我想我上次在我以前的服务器上通过重新启动 IIS 来解决它,当这个错误弹出时,这是我不想在这个新服务器上求助的东西。

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

非常感谢任何帮助

特鲁吉利

4

1 回答 1

1

这种类型的问题通常归结为两件事之一。要么你没有正确处理你的连接,要么你有大量的查询完全接管了你的数据库服务器。

如果您没有正确处理连接,那么 IIS 会很高兴地保留它们,直到垃圾收集运行和/或它们超时。如果您的网站流量非常小,那么您将看不到问题所在。

但是,一旦流量达到挂起的连接数超过您尝试与数据库服务器建立连接的次数的程度。好吧,您将开始看到几个可能的错误之一。Timeout expired 为一。确切的错误将取决于哪个部分发生故障:连接池、sql server 本身等。

您评论的修复是一个临时解决方案。随着您的流量继续增加(这是个好问题),您的代码的其他区域将导致问题再次出现。

于 2010-10-08T15:44:37.203 回答