我们每天都会遇到一些实例,在这些实例中,我们会从多个应用程序中收到大量SQL超时错误(System.Data.SqlClient.SqlException:Timeout expired.超时时间在操作完成之前已过,或者服务器没有响应)我们的网络上有100多个不同的应用程序,包括web和桌面应用程序.从VB6和classic ASP到.第四网.我能找到显示副作用的各种数据,但不能确定是什么原因造成的.我们的DBA说SQL Server没有什么问题,它说Web服务器或网络没有什么问题,所以当然,我在中间试图解决这个问题.
我真的只是想知道我能做些什么来解决这个问题.
我们正在群集中运行SQL Server 2008 R2.有几个不同的服务器连接到它,从Windows server 2003到2008,种类各异.
以下是我到目前为止所做的:
- Run SQL trace of long running queries and deadlocks.这表明出现问题时没有死锁,长时间运行的查询都与超时错误一致,但看起来是副作用,而不是原因.通常会立即返回的非常基本的查询有时需要30、60或120秒才能运行.这种情况会持续几分钟,然后一切都恢复正常.
- Use performance monitor to track connection pool connections.这有时会显示连接数在接近超时时间时出现一些峰值,但仍然没有达到默认的Use performance monitor to track connection pool connections.连接限制的一半.再一次,这里似乎没有任何原因.
- Separate web applications into different App Pools.我们试图缩小我们认为可能是主要问题的应用程序(最爱聊天等),并将它们放在单独的应用程序池中,但这似乎没有影响任何东西,也没有帮助我们缩小任何范围.
- Monitor disk usage on SQL Server.我们已经在SQL server上进行了一些监控,当这些超时发生时,没有看到峰值或任何问题迹象.
- Verified TempDB不是问题的原因.
如果我想一想我们还try 了什么,我会回来补充更多.请让我知道下一步要解决的问题.