加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 什么是SNIReadSyncOverAsync,为什么需要很长时间才能

发布时间:2020-12-16 00:43:45 所属栏目:asp.Net 来源:网络整理
导读:在我们的ASP.Net网站上,我们有一些请求超时。 AppDynamics显示SQL过程调用在几秒钟内返回,但是我们在SNIReadSyncOverAsync中花费了100秒。 有谁知道这个方法是/做什么,为什么要花这么多时间?我们没有使用在我能够找到的每个问题/帖子中引用的EF。 提前致
在我们的ASP.Net网站上,我们有一些请求超时。 AppDynamics显示SQL过程调用在几秒钟内返回,但是我们在SNIReadSyncOverAsync中花费了100秒。

有谁知道这个方法是/做什么,为什么要花这么多时间?我们没有使用在我能够找到的每个问题/帖子中引用的EF。

提前致谢

更新

这是一段时间,虽然我们从来没有提到过为什么所有的时间都花在SNIReadSyncOverAsync上,但我有一些想法。

我认为在这种情况下,这可能是AppDynamics的特定版本报告了SQL调用所花费的时间的方式,但是我没有真正的数据来支持,只是我从我观察到的猜测。我们最终停止看到报告的时间在SNIReadSyncOverAsync中花费的时间,并将其转移到查询本身超时。

因为相同的查询可以在同一个数据库上的SSMS中立即运行,所以仍然没有太大的影响。

最终的答案最终与ARITHABORT有关,导致我们的应用程序和SSMS使用两种不同的执行计划(见https://dba.stackexchange.com/a/9841),解释为什么我们无法使用SSMS再现超时。

一旦我们解决了这个问题,我们就可以确定需要进行调整的程序的几个部分,而且我们还没有遇到无法解释的超时或SNIReadSyncOverAsync。

解决方法

不确定您是否已经解决了这个问题,但是:SNI是SQL Server网络接口,并且大多数ADO.NET完全调用堆栈中存在所提到的方法,它们等待SQL Server的数据。这是不管高级别的实现是EF,原始的ADO.NET还是其他的。

我不知道AppDynamics使用哪个度量或信号来捕获存储过程执行的完成,但如果您的存储过程完成相对较快,但是将查询结果从服务器传输到客户端,则可能会看到此类行为一会儿。

在不了解更多关于您的基础设施的情况下,很难进一步帮助。如果问题仍然存在,建议您在SQL Server Management Studio中运行相同的查询,并将SET STATISTICS TIME ON和“包括客户端统计信息”切换到开启状态。也许这些数字会让您了解数据传输是否真的是问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读