在我们的 ASP.Net 网站上,我们遇到了一些请求超时。AppDynamics 显示 SQL 过程调用在几秒钟内返回,但我们在 SNIReadSyncOverAsync 中花费了 100 多秒。
有谁知道这种方法是/做什么以及为什么要花那么多时间?我们没有使用我能够找到的每个问题/帖子中都引用的 EF。
提前致谢
更新
已经有一段时间了,虽然我们从未就为什么所有时间都花在 SNIReadSyncOverAsync 上达成一致,但我有一些想法。
我认为在这种情况下,可能是特定版本的 AppDynamics 报告了在 SQL 调用上花费的时间的方式,但我没有真实的数据来支持它,这只是我观察到的猜测。我们最终不再看到报告为 SNIReadSyncOverAsync 所花费的时间,而是转向查询本身超时。
这仍然没有多大意义,因为相同的查询会立即在 SSMS 中的同一数据库上运行。
最终答案最终与 ARITHABORT 相关,导致我们的应用程序和 SSMS 使用两个不同的执行计划(请参阅https://dba.stackexchange.com/a/9841),解释了为什么我们无法使用 SSMS 重现超时。
一旦我们解决了这个问题,我们就能够确定需要调整的过程的几个部分,并且我们没有遇到无法解释的超时或 SNIReadSyncOverAsync 自那以后。