【问题标题】:Azure Web App. Free is faster than Basic and Standard?Azure Web 应用程序。免费比基本和标准更快?
【发布时间】:2015-04-15 18:51:57
【问题描述】:

我有一个 C# MVC 应用程序,其中包含在 Azure 上运行的 WCF 服务。首先它当然是托管在免费版本上,但由于我让那个运行平稳,我想尝试看看它是如何在 Basic 或 Standard 上运行的,据我所知,这应该是专用服务器。

令我惊讶的是,一旦将代码从 Free 更改为 Standard 或 Basic,它的运行速度就会明显变慢。我选择了最小的实例,但仍然希望它们比免费选项的性能更好?

从我的性能日志中,我可以看到运行特别慢的代码是从 Task.Run 异步启动的。最初它是老派 Thread.Start() 但考虑到这是否可能在一些较低优先级的线程中产生它,因此将其更改为 Task.Run - 没有改变任何东西 - 所以也许它与它无关 - 但它可能,所以现在你知道了。

运行速度非常慢的代码基本上适用于一些 XML 文档,通过 XDocument、XElement 等。它循环通过,有一些 LINQ 等,但没什么太花哨的。但是在基本版和标准版上的速度仍然比免费版慢 5-10 倍吗?对于完全相同的请求,免费版使用大约 1000 毫秒,而基本版和标准版使用 8000-10000 毫秒?

在每个测试中,我都尝试了 5-10 次,但响应时间没有任何减少。我考虑过是否需要等待几个小时才能使基本/标准版功能完全发挥作用或类似的东西,但每次我切换回来时,免费版从一开始就胜过它。

有什么建议吗?出于某种奇怪的原因,免费版是否比基本版或标准版更强大,还是在我启动并运行基本版或标准版后,我是否需要进行不同的配置?

【问题讨论】:

  • 我的猜测是 MS 想要给人留下好印象,因此免费层对于少量用户/资源来说非常活泼。这家伙说他在 20 个免费并发用户中遇到了很大的障碍:microsofttrends.com/2014/12/27/…
  • 感谢您的链接,我实际上一直在寻找不同选项的直接比较。

标签: c# asp.net-mvc wcf azure


【解决方案1】:

免费和基本/标准层之间的显着区别在于,免费使用未公开数量的共享内核,而基本/标准具有定义数量的 CPU 内核(1-4 个,取决于您支付的金额)。与此相关的是 Free 是共享实例,而 Basic/Standard 是私有实例。

基于此,我的最佳猜测是,由于您所在的免费服务器将容纳多个不同的用户和应用程序,因此它们可能具有相当不错的规格。他们的 CPU 可能是 8 核 Xeon,甚至可能有多个 CPU。最有可能的是,Azure 没有强制实施任何上限,而是依靠配额(免费层为 60 CPU 分钟/天)和服务器的总体需求来限制 CPU 使用。换句话说,如果您的站点是目前唯一正在做任何事情的站点(当然不太可能,但为了举例说明),您可能会利用盒子上的所有 8 个以上内核,而当您移动时到基本/标准,你被硬限制到 1-4。处理 XML 实际上占用大量 CPU,所以这似乎符合我的假设。

这很可能是侥幸。也许您的住所当前位于尚未被租户填满的相对较新配置的服务器上。也许您只是碰巧与不做太多事情的租户共享。谁知道?但是,如果服务器实际上处于实际负载下,我想您会发现免费层的响应时间甚至比基本/标准更糟糕。

【讨论】:

  • 这可能是一个非常合理的解释。我尝试将标准扩展为中型和大型,然后提供与免费选项相同的性能。作为您的答案和我最初问题下方评论中的链接的组合,我尝试了共享选项,它实际上提供了我所见过的最佳性能。当然,正如您所建议的那样,我的时间可能会有所不同,具体取决于运行在它们上的其他站点加载的共享(在免费和共享选项中)服务器的多少。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 2022-11-04
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多