超时已过期。在完成操作或服务器之前经过了超时时间。等待操作超时 - 奇怪的行为

时间:2015-10-02 06:34:53

标签: sql-server asp.net-mvc performance ado.net timeout

我知道SO中有很多这类话题,但我想介绍一下我的具体例子。

从Web应用程序(ADO.NET,ASP.NET MVC)运行操作时出现错误: 超时已过期。在完成操作或服务器之前经过了超时时间。等待操作超时

但是直接在db raw查询(由profiler捕获)上运行时只需要2秒钟。

背景

  1. 问题突然出现(发布后一周),仅在prod服务器中发生。
  2. 此特定查询的超时为180秒,http请求为24000 [单位] - 可能还为秒(每MSDN)
  3. 我们没有全文索引
  4. 当用户通过一个“fretext”(普通文本框)字段搜索生成查询的内容时,仅针对一个特定查询发生错误 额外的10-12 “或类似%value%”条件(从开始就完成它的方式,并且没有机会改变它)
  5. 什么是奇怪的非常相似的查询(对于其他“自由文本”字段具有相同数量的“或类似%value%”)工作没有任何问题
  6. 事务隔离级别=已序列化
  7. 对每个查询以相同的方式完成数据绑定(controller-> service-> db-> service-> view model-> html),实际上是我们的 框架自动将字段从“select”查询绑定到viewModels
  8. 原始查询(由探查器捕获)快速运行(2-3秒),但是从webApp级别返回超时。
  9. 我无法直接访问prod服务器,因此我无法立即检查所有内容,也无法共享任何代码/堆栈跟踪。
  10. 建议:

    发现很多类似的帖子,这个对我来说特别有趣:https://stackoverflow.com/a/8603111,并且想知道清除统计信息(exec sp_updatestats)。

    问题:

    您是否有类似的经历,可能是上面建议的任何其他建议?原始查询在短时间内运行的原因是什么,但是从webapp获取超时?

1 个答案:

答案 0 :(得分:2)