【问题标题】:SQL server Timeout – only happens very occasionallySQL 服务器超时——只是偶尔发生
【发布时间】:2010-10-08 12:53:26
【问题描述】:

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

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

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

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

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

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

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

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

非常感谢任何帮助

真吉利

【问题讨论】:

  • 我刚刚改变的一件事是... 我现在已将 pollTime 增加到默认值 60000,这可能对数据库有所帮助不会经常被击中

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多