【发布时间】:2011-12-06 07:43:25
【问题描述】:
我们每天都会遇到一些实例,其中我们从多个应用程序中收到大量 SQL 超时错误(System.Data.SqlClient.SqlException:超时已过期。在操作或服务器完成之前超时时间已过没有响应。)我们的网络上有 100 多个不同的应用程序,包括 Web 和桌面应用程序。从 VB6 和 Classic ASP 到 .NET 4 的所有内容。我可以找到各种显示副作用的数据,但无法查明导致这种情况的原因。我们的 DBA 说 SQL 服务器没有问题,IT 说 Web 服务器或网络没有问题,所以我当然要在中间尝试解决这个问题。
我真的只是在寻找有关我可以做哪些其他故障排除的建议来尝试追踪这个问题。
我们在集群中运行 SQL Server 2008 R2。有一些不同的服务器连接到它,从 Windows server 2003 到不同品种的 2008。
这是我到目前为止所做的:
- 运行长时间运行的查询和死锁的 SQL 跟踪。 这表明在出现问题时没有死锁,长时间运行的查询都与我们的超时错误一致,但看起来是副作用,而不是原因。非常基本的查询通常会立即返回,有时最终需要 30、60 或 120 秒才能运行。这种情况会持续几分钟,然后一切都会恢复并正常工作。
- 使用性能监视器来跟踪连接池连接。这有时会显示连接数在超时时间附近出现一些峰值,但仍然没有达到默认的 100 个连接限制的一半。同样,这里似乎没有任何迹象表明原因。
- 将 Web 应用程序分离到不同的应用程序池中。我们试图缩小我们认为可能是主要问题的应用程序(最烦人等)并将它们放在单独的应用程序池中,但这似乎没有影响或帮助我们缩小范围。
- 监控 SQL Server 上的磁盘使用情况。我们已经在 SQL Server 上进行了一些监控,并且在发生这些超时时没有看到任何峰值或任何问题迹象。
- 已验证的 TempDB 不是问题的原因。
如果我想到我们尝试过的其他方法,我会回来添加更多内容。请告诉我一些关于接下来要解决什么问题的想法。
【问题讨论】:
-
您查看过有关锁定 sql server 的性能计数器吗?
-
几年前我也遇到过类似的问题 - 结果发现清洁器每天大约在同一时间出现,并拔下路由器为真空吸尘器提供电源插座......没有帮助,我知道。
-
@Nevillek:起初我以为你的意思是“更清洁”是一些 SQL 进程,但后来,哇!
-
不久前遇到了同样的问题。对我们来说,解决方案不是摆弄 SQL Server。是我们的代码库没有清理在所有情况下都正确关闭连接的阅读器。自从我们经历了这一切以来,还没有遇到过这个问题。
-
我最初认为这也是连接的问题,但是在监控这些时,我们通常不会在任何给定时间获得超过 20-30 个连接,所以这似乎不是问题.
标签: .net sql sql-server sql-server-2008 timeout