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

Sud*_*ha 9 performance latency azure azure-sql-database

Azure Web角色Sql Azure延迟

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

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

请参阅附带的屏幕截图:

在此输入图像描述

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

谢谢,

Mid*_*one 17

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

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

SQL Azure和性能

  1. 切勿在云端使用池化连接.如果您这样做,您的查询将向右和向中移动.而是打开一个连接并保持打开状态,直到完成为止.
  2. 使用缓存.如果你有希望让这项工作,你没有选择.我在云中成功建立了一个站点,但我不得不使用缓存来获得任何合理的性能.
  3. 意识到这不是你的错!Azure团队需要比你的团队更多地修复他们的目标.我们有一个精益应用程序,我们已经升级,调整和优化了10年,如果我们不能使它工作,那么你也不会.

我喜欢Azure作为一个概念.我喜欢这些选择.我喜欢可扩展性,但我不喜欢这种性能.我希望微软能够更加关注这一点,并做出一些改变,因为在修复之前没有人应该将业务转移到那里.

测试

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

没有为测试启用缓存,但是我确实允许代码和DB在之前执行一次并获得最佳结果,以便DB服务器有机会优化查询,因此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 Server.
  • Web和SQL都是彼此本地的
  • 产生656毫秒的响应时间.

测试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毫秒的响应时间.

测试4 - Azure

  • Azure上的中型VM
  • SQL Azure DB
  • 产生3,174毫秒的响应时间.

结论

  • 从一个服务器场景迁移到两个服务器场景时,我的延迟差异为140毫秒.
  • 从该场景迁移到Azure的时间为2,518毫秒.这比我8岁的机器性能差17.98倍.

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


ast*_*kov 8

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

我也建议你要知道SLA的服务,Windows Azure的SQL数据库尤其如此.没有人声称会有0毫秒的延迟.在WIndows Azure SQL数据库中还有" 瞬态条件 " 这样的东西.

一个很好的建议阅读是Windows Azure SQL数据库性能和弹性指南.

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

第一条评论后更新

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

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

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

UPDATE

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