在我们的ASP.Net网站,我们收到一些请求超时.AppDynamics显示SQL过程调用在几秒钟内返回,但我们在SniredSyncOverSync上花费了100多秒.

有人知道这个方法是什么,为什么要花那么多时间吗?我们没有使用EF,我能找到的每一个问题/帖子都提到了它.

提前谢谢

Update

已经有一段时间了,虽然我们从未就为什么所有的时间都花在SniredSyncoverSync上达成一致,但我有一些 idea .

我认为在这种情况下,可能是特定版本的AppDynamics报告SQL调用所花费的时间的方式,但我没有真实的数据来支持这一点,只是根据我观察到的情况进行猜测.我们最终不再看到报告的时间花在SniredSyncoverSync上,而是转移到查询本身超时上.

这仍然没有多大意义,因为相同的查询会立即在同一数据库的SSMS中运行.

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

一旦我们解决了这个问题,我们就能够确定过程中需要调优的几个部分,此后就再也没有遇到无法解释的超时或SNIReadSyncOverAsync.

推荐答案

不确定您是否已经解决了这个问题,但是:SNI是SQL Server网络接口,并且所提到的方法存在于大多数等待来自SQL Server的数据的ADO.NET全调用堆栈中.这与更高级别的实现是EF、RAW ADO.NET还是其他任何形式无关.

我不确定AppDynamics使用哪个指标或信号来捕获存储过程执行的完成情况,但如果存储过程完成得相对较快,您可能会看到这种行为,但将查询结果从服务器传输到客户端需要一段时间.

如果不了解更多有关基础设施的信息,就很难进一步提供帮助.如果问题仍然存在,我建议在SQLServerManagementStudio中运行相同的查询,同时打开SET STATISTICS TIME并打开"Include Client STATISTICS".也许这些数字能让你了解数据传输是否真的是问题所在.

Asp.net相关问答推荐

C# - 将 xyz 平铺转换为纬度/经度,反之亦然,给出不同的结果

单个方法(即扩展方法)之间的调用不明确

如何使用 SmtpClient.SendAsync 发送带有附件的邮箱?

测试项目中的 App.config

在程序集中找不到上下文类型

解析 JSON 响应的最简单方法

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

如何在 Visual Studio 2017 中使用 NPM 并安装包?

HttpContext.Current.Cache.Insert 和 HttpContext.Current.Cache.Add 有什么区别

以编程方式添加跨度标签,而不是标签控件?

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

在 Android/Java 和 C# 中计算 SHA256 哈希

*.csproj 中的 usevshostingprocess 是什么?

应该如何使用 RedirectToRoute?

web.config 中与 targetFramework 相关的配置错误

如何使用 encodeURIComponent() 解码在 JS 中编码的 HTML?

如何在 .NET Core 中实现 DbContext 连接字符串?

IsMobileDevice 是如何工作的?

如何调试 w3wp clr.dll 错误

如何在不遍历每个循环的情况下从字典对象中获取所有键(仅键)