Azure Web角色与SQL Azure和应用程序性能之间的延迟

时间:2012-07-20 07:08:53

标签: performance azure azure-sql-database latency

Azure Web角色 Sql Azure延迟

嗨,只是要知道网络工作者角色 SQL Azure 之间存在延迟和超时,有时会发生超时事件(这些不是随机的)经常)100次ping中有40%没有0ms超时

如果Web工作者角色和SQL Azure位于同一数据中心,为什么在使用内部网络进行通信时出现超时

请参阅随附的屏幕截图:

enter image description here

在这个web worker角色上运行的应用程序有一个神秘的性能起伏......如果可能是由于各种原因,但我需要知道的是,关于延迟和超时的这些统计数据会影响Web应用程序的性能吗?

谢谢,

2 个答案:

答案 0 :(得分:17)

我在另一个帖子上发布了这个帖子,但它已经过时了,已经关闭了。我认为它突出了你的一些问题。

我一直在尝试将我们的商业应用程序迁移到云端。考虑到我们的现场服务器已有8年以上的历史,Azure服务应该会有显着的改进。然而,当我们测试我们的应用程序并对云和现场进行基准测试时,我们注意到云中的延迟几乎是现场(8年以上的服务器)总体延迟的3倍,当使用现代设备进行比较时潜伏20倍。 我们的应用程序是一个asp.net应用程序,数据库大小约为11 GB。

SQL Azure和性能

  1. 切勿在云端使用池化连接。如果您这样做,您的查询将向右和向中移动。而是打开一个连接并保持打开直到完成。
  2. 使用缓存。如果你有希望让这项工作,你没有选择。我在云中成功建立了一个站点,但我不得不使用缓存来获得任何合理的性能。
  3. 意识到这不是你的错! Azure团队需要比你的团队更多地修复他们的目标。我们有一个精益应用程序,我们已经升级,调整和优化了10年,如果我们不能使它工作,那么你也不会。
  4. 我喜欢Azure作为一个概念。我喜欢这些选择。我喜欢可扩展性,但我不喜欢这种性能。我希望微软能够更加关注这一点,并做出一些改变,因为在修复之前,没有人应该将业务转移到那里。

    <强>测试

    测试是通过运行一系列查询来完成的,这些查询访问完全相同的数据并通过自定义函数在代码中完成,该函数测量从创建对象到处理它的时间(强制写入数据库)的响应时间)。该对象包装正在测试的代码。

    没有为测试启用缓存,但我确实允许代码和DB在之前执行一次并获得最佳结果,以便DB服务器有机会优化查询,因此Web服务器可以正确加载程序集

    测试1 - 同一台好机器上的Web和DB

    • 四核2.5GHz,8GB Ram @ 800Mhz,1300 FSB和SQL 2005
    • 产生 290 ms 响应时间。

    测试2 - 同一台机器上的Web和DB

    • SQL和Web on 2 Proc(双核3.0GHz),16GB Ram @ 200Mhz,200 FSB和SQL 2005 真的很旧IBM服务器。
    • Web和SQL都是彼此本地的
    • 产生 656 ms 响应时间。

    测试3 - 与DB分开的Web

    • SQL on 2 Proc(双核3.0GHz),16GB Ram @ 200Mhz,200 FSB和SQL 2005
    • Web on 1 Proc双核3.0GHz,8GB Ram @ 200Mhz,200 FSB
    • 旧IBM服务器。
    • 一台机器上的Web和另一台机器上的SQL。
    • 产生 796 ms 响应时间。

    测试4 - Azure

    • Azure上的中型虚拟机
    • SQL Azure DB
    • 产生 3,174 ms 响应时间。

    <强>结论

    • 从一个服务器场景迁移到两个服务器场景时,我的延迟差异 140 ms
    • 从该场景移至Azure 2,518 ms 。这比我8岁的机器强17.98倍

    在他们解决此问题之前不要这样做,并花时间让他们知道这也是一个问题。

答案 1 :(得分:8)

首先,您需要知道Windows Azure SQL数据库是一种作为服务提供的多租户,高密度RDBMS。这意味着,可能有数百个客户使用单个服务器。

我还建议您特别了解SLA for the servicesWindows Azure SQL Database。没有人声称会有0毫秒的延迟。还有&#34; Transient Conditions&#34;在WIndows Azure SQL数据库中。

好的建议阅读是Windows Azure SQL Database Performance and elasticiy guide

至于网络应用程序的性能,在阅读了性能和弹性指南后,我不认为偶尔发生的200ms是核心瓶颈。

第一条评论后更新

在共享环境中,您将始终有起伏。您还应该期望查询执行时间能够上下变化。在这种环境中,这是不可避免的,你需要设计和使用它。这里没有魔术棒,在Windows Azure SQL数据库中没有为您(对我们而言)提供专用服务器。如果您认为应用程序需要更可靠的SQL Server服务,则可以尝试使用Windows Azure虚拟机并自行启动SQL Server群集。我猜(这只是猜测)云服务和虚拟机之间的通信(假设一切都在同一个可用性集中)将更加可预测。

第2和第3条评论后更新:

嗯,是的,您可能有许可问题(我是许可方面的专家)。您是否为跌宕起伏的门票打开了?如果是这样,你可以尝试升级它(不知道怎么做,但你有你的机票ID,你还必须有一个指定的工程师和一个关于机票的电子邮件 - 回复所有电子邮件邮件)。此外,当您创建故障单时,必须有一个小问卷来反映您的问题对业务的影响。然后必须为票证分配通常的响应时间。如果支持在那段时间内没有回复给您,您肯定可以升级它。

<强>更新

我有趣的观察结果是,在您的所有屏幕截图中,只有第一个数据包被延迟,然后每个连续都有0延迟。在您提供的所有样品中。如果这是您的情况10次中有10次,那么您肯定没有任何延迟问题。我建议您使用&#34; -t&#34;常规ping中的选项发送超过4个数据包并观察。我建议打破大约100个数据包,然后观察结果。我不会考虑4个数据包样本,其中只有第一个包含任何性能审核的延迟。