当我在 SSMS 中直接手动运行查询时,它成功运行(10-20 秒内)。当通过 .NET/IIS Web 应用程序启动查询时,它会无限期挂起,并最终锁定其他查询。我等了 20 分钟后最终终止了查询。
通过 .NET/IIS 应用程序应用查询时,哪些因素会导致查询挂起?
它有一些大型表连接,但它在 SSMS 中运行得相当好,所以我预计在 .NET Web 应用程序上的时间也差不多。有什么想法吗?
谢谢你!
当我在 SSMS 中直接手动运行查询时,它成功运行(10-20 秒内)。当通过 .NET/IIS Web 应用程序启动查询时,它会无限期挂起,并最终锁定其他查询。我等了 20 分钟后最终终止了查询。
通过 .NET/IIS 应用程序应用查询时,哪些因素会导致查询挂起?
它有一些大型表连接,但它在 SSMS 中运行得相当好,所以我预计在 .NET Web 应用程序上的时间也差不多。有什么想法吗?
谢谢你!
您实际上是在运行完全相同的查询,还是只是运行类似的查询?
即使一个参数的值也会对查询性能产生重大影响。
另外,正如 Greg Askew 所说,检查隔离级别;如果在 IIS 中运行时和在 SSMS 中运行时隔离级别不同,则可能会出现竞争条件甚至死锁。
我建议检查应用程序池性能,因为我过去看到过请求如果耗时太长或占用太多内存就会失败。这是 SSMS 没有的限制。通常失败会显示在您的应用程序后端,但我们缺乏有关如何处理错误检查的详细信息
如果这样,请检查这些设置;我粘贴了一些通用的推荐设置。
队列长度 2000(高于默认值 1000)
空闲超时(分钟)0(低于默认值 20)
Ping 启用 False(高于默认值 True)
私有内存限制(KB)0(无限制,高于默认值 1,843,200 KB)
常规时间间隔(分钟)0(为防止循环,修改默认值 1740)