我们每天都会遇到一些实例,在这些实例中,我们会从多个应用程序中收到大量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 了什么,我会回来补充更多.请让我知道下一步要解决的问题.

推荐答案

对长时间运行的查询和死锁运行SQL跟踪.这表明没有

看起来有些查询/事务会在完成之前锁定数据库.您必须找出哪些查询被阻塞,并在其他时间重写/运行它们,以避免阻塞其他进程.此时,等待查询刚刚超时.

另外一点需要深入研究的是事务日志(log)和数据库的自动增量大小.将它们设置为固定大小,而不是当前文件的百分比.如果文件越来越高,分配足够空间所需的时间最终会随着事务超时而变长.你的数据库停止了.

Sql相关问答推荐

SQL更新,在2个额外的表上使用内部连接

Postgres JSONB对象筛选

我可以将INSERT语句与SELECT一起使用来创建条件吗?

如何在SQL Server中列出从当前月份开始的过go 10年中的月份

Oracle SQL-将结果列在单行中

如何使用WSO2将空值传递给我的SQL Server存储过程?

查找表中特定值的上次更新日期

对表进行多项 Select 以返回最大值和时间

从包含PostgreSQL中的JSON值的列中提取列表或目录

Oracle 23c ROUND,数据类型为DATE

Postgres SQL查询从字符串中获取邮箱地址

在SQL查询中查找客户端的最短日期比较列和多行

如何在android房间中进行多个加入

Grafana SQL 模板变量(值、文本)

Spark / Hive:如何获取列中正值的百分比?

批量更改WooCommerce中所有产品的税收状态

使用 PL/PGSQL 函数 Select 返回多条记录

连续期间的缺口

在 postgresql 中,我可以将其组合成一个查询吗?

如何计算每行出现的次数并显示在另一个表中?