首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL Azure每10秒延迟响应一次

SQL Azure每10秒延迟响应一次
EN

Stack Overflow用户
提问于 2018-08-29 18:23:15
回答 2查看 248关注 0票数 1

我们正在针对SQL Azure运行几个Azure web应用程序(.NET核心、MVC4、MVC5)。每隔10秒,SQL服务器的响应就会有相当大的延迟。我们已经使用控制台应用程序将相同的查询循环了100次来测试这一点,无论我们何时启动控制台应用程序,延迟恰好每10秒发生一次。

查询通常需要150ms才能完成。每10秒需要2-3秒。

测试和生产DB服务器上的行为是相同的。我们使用了几个触发器(5),它们都不是由负载测试中使用的查询触发的。

负载测试是一个带有简单select查询的存储过程。当我们运行这些测试时,没有其他用户使用我们的测试环境。

我们还使用Azure门户中的性能测试工具对其进行了负载测试,结果相同。

关于从哪里开始寻找这种延迟的根本原因,你有什么想法吗?

我们的测试代码:

代码语言:javascript
复制
    private static void Main(string[] args)
    {
        var ss = new Stopwatch();
        // Let's go
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            for (var i = 0; i < 100; i++)
            {
                ss.Restart();
                connection.Open();
                var sql = "EXEC usp_loadTestSp";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        Console.WriteLine($"Current time {i}: {DateTime.UtcNow}");
                    }
                }
                connection.Close();
                Console.WriteLine($"Loop time {i}: {ss.ElapsedMilliseconds}");
            }
        }

        EndApp();
    }

更新:刚刚在Azure上创建了一个新的SQL server和一个新的空白SQL数据库。没有桌子,什么都没有。已更新测试应用程序中的连接字符串,已将查询更改为SELECT NULL。同样的结果,每10秒需要更长的时间...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-07 16:31:04

感谢所有人的回复,并对延迟的回答表示抱歉。

我已经找到了这个问题的原因,它与SQL Azure或任何其他Azure服务无关。

这个问题在我的设备上是本地的,罪魁祸首是我用来将我的文档同步到Google Drive的Google Drive Stream客户端。使用"ping -t“测试,我得到一个非常稳定的延迟,每10秒2秒。禁用Google驱动流,ping始终很快。重新启用Google Drive Stream,延迟又回来了。

现在来看看如何继续使用文件流而不会有延迟。

TGM

票数 2
EN

Stack Overflow用户

发布于 2018-08-31 08:43:24

SQL Azure通常会有这样的行为,这并没有什么特别的原因。但是,当您看到这样的情况时,我建议您首先将客户端逻辑和客户端驱动程序/网络与服务器上发生的逻辑分开。因此,在这种情况下,您可以创建一个存储过程,它在程序中执行与您的循环等效的操作,并尝试在服务器上运行该存储过程并对其进行计时。它应该会给你一些数据,而不涉及这些其他部分。

您的另一个选择是查看查询存储(它将为您提供查询在服务器上执行时间的汇总数据,而不是跟踪级别的数据,但它会为您提供每个指标的min/max/last/avg/stdev )。这应该会给你另一个数据点来评估这是来自服务器端还是客户端/应用程序端。https://docs.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store?view=sql-server-2017

另一种选择是启用set "statistics time on“来执行查询-这将为您提供一组额外的数据,您可以在客户端驱动程序中检索有关服务器用于处理您的查询的资源的数量。

出现此问题的一个可能原因是您在服务器上的数据中存在偏差-换句话说,如果表中的10比其他值多得多。在这种情况下,您必须检索更多的值,这可能会在查询响应时间中引入差异。

最后,您可以使用XEvents来跟踪每个查询的执行时间(尽管这需要一些当前在SQL Azure上设置的工作,但是可以将查询的事件跟踪转储到blob存储中,这样您就可以查看服务器认为它使用了多少时间)。

我希望这能给你一些东西来尝试追查你的谜团。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52075139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档