【问题标题】:Latency between Azure Web Role and SQL Azure and Application performanceAzure Web 角色和 SQL Azure 之间的延迟和应用程序性能
【发布时间】:2012-07-19 10:40:39
【问题描述】:

Azure Web 角色Sql Azure 延迟

您好,只是想知道 web worker 角色SQL Azure 之间存在延迟和超时,有时会发生超时(这些不是随机的)频繁)100 次 ping 的 40% 没有 0 毫秒超时

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

请参考随附的屏幕截图:

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

谢谢,

【问题讨论】:

    标签: performance azure azure-sql-database latency


    【解决方案1】:

    我在另一个线程上发布了这个,但它很旧并且已经关闭。我认为它突出了您的一些问题。

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

    SQL Azure 和性能

    1. 切勿在云中使用池连接。如果这样做,您的查询将左右和居中放置。而是打开一个连接并保持打开状态,直到完成。
    2. 使用缓存。如果您希望完成这项工作,您别无选择。我在云中成功建立了一个站点,但我不得不使用缓存来获得任何合理的性能。
    3. 意识到这不是你的错! Azure 团队比你更需要解决他们的问题。我们有一个精简的应用程序,我们已经升级、调整和优化了 10 年,如果我们不能让它工作,那么你也不会。

    我喜欢 Azure 作为一个概念。我喜欢这些选项。我喜欢可扩展性,但我不喜欢性能。我希望微软对此给予更多关注并做出一些改变,因为在这个问题得到解决之前,任何人都不应该将他们的业务转移到那里。

    测试

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

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

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

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

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

    • SQL 和 Web on 2 Proc(双核 3.0GHz),16GB Ram @ 200Mhz,200 FSB 和 SQL 2005 非常老的 IBM 服务器。
    • Web 和 SQL 都是本地的
    • 产生 656 毫秒 响应时间。

    测试 3 - Web 与 DB 分离

    • 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 毫秒 响应时间。

    测试 4 - Azure

    • Azure 上的中型虚拟机
    • SQL Azure 数据库
    • 产生 3,174 毫秒 响应时间。

    结论

    • 当我从一台服务器方案迁移到两台服务器方案时,延迟差异为 140 毫秒
    • 从该场景迁移到 Azure 需要 2,518 毫秒。这比我使用 8 年旧机器的性能差 17.98 倍

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

    【讨论】:

    • 您最近是否再次运行该测试?有兴趣更新!
    • 我没有再次运行测试,因为我们放弃了它,转而使用托管 SQL 的 VM。我会为大多数应用程序推荐该路线,因为您可以很好地结合控制和功能。了解 SQL Azure 不会为您提供的数据库机制是有价值的。
    • 运行托管 SQL Server 的 VM 与 SQL Azure 相比,性能是否更好?
    • 在测试时,VM 要好得多。我怀疑对于许多应用程序来说,VM 会更胜一筹,但如果您不熟悉如何运行和管理自己的 sql server 实例,那么 SQL Azure 可以为您删除配置方面的好处。
    • 我使用 Sql Azure 多年,在端到端调用 - ui-api-sql-api-ui 中体验不超过 200 毫秒。我不知道你怎么能达到 2.5 秒。通过在同一台机器上查看 Test 2 Web 和 DB,在同一台机器上运行的代码需要 656 毫秒 - 我谦虚地建议代码可能存在问题,而不是 sql azure 的性能。
    【解决方案2】:

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

    我还建议您特别了解SLA for the servicesWindows Azure SQL Database。没有人声称会有 0 毫秒的延迟。 WIndows Azure SQL 数据库中也有“Transient Conditions”之类的东西。

    推荐阅读Windows Azure SQL Database Performance and elasticiy guide

    关于web应用性能,看了Performance and elastic guide之后,我不认为偶尔出现的200ms是核心瓶颈。

    第一条评论后更新

    在共享的环境中,您总会有起起落落。您还应该期望查询执行时间上下变化。在那种环境中,这是不可避免的,你必须为之设计和生活。在 Windows Azure SQL 数据库的情况下,这里没有魔杖,也没有为您(我们)提供的专用服务器。如果您认为您的应用程序需要更可靠的 SQL Server 服务,您可以尝试使用 Windows Azure 虚拟机并自己创建一个 SQL Server 集群。我猜(这只是一个猜测)你的云服务和你的虚拟机之间的通信,假设一切都在同一个可用性集中,将更可预测。

    第 2 次和第 3 次比赛后更新:

    嗯,是的,您可能遇到了许可问题(我是许可方面的专家)。你开的票是涨跌的吗?如果是这样,您可以尝试升级它(不知道如何,但您有您的工单 ID,您还必须有指定的工程师和有关工单的电子邮件 - 回复所有该电子邮件) .此外,当您创建工单时,必须有一份小型问卷来反映您的问题对业务的影响。然后必须为工单分配通常的响应时间。如果在这段时间内没有给您提供支持,您绝对可以将其升级。

    更新

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

    【讨论】:

    • 谢谢,但我们浏览了弹性指南并应用了所需的内容,但仍然......这个问题是随机的性能起伏
    • 感谢@astaykov 的详细回答,我仍然认为建立我们自己的 sql 集群不会工作,因为它会产生许可问题 + 我认为我们也必须维护自己,我们已经开设了一个微软的支持票在 3 天后仍然没有回复
    • + 我们遇到了 SQL 服务器最近超时的问题
    • 感谢您的回答! .. 微软技术支持将回复您,,,
    • 底线是,如果它的性能是上下颠簸,不可预测,可能没有多少人会需要这样的东西。那么,多租户实际上成为表现不佳的借口。
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多