Azure 网络应用程序。免费版比基本版和标准版快?

Azure Web App. Free is faster than Basic and Standard?

我在 Azure 上有一个带有 WCF 服务的 C# MVC 应用程序 运行。第一个当然是托管在免费版本上,但是当我顺利地 运行 时,我想尝试看看它在 Basic 或 Standard 上如何 运行,据我所知应该是专用服务器。

令我惊讶的是,代码 运行 从免费更改为标准或基本后,速度明显变慢。我选择了最小的实例,但仍然期望它们的性能比免费选项更好?

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

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

在每个测试中我都尝试了 5-10 次,但响应时间没有任何减少。我想过我是否需要等待几个小时才能让 Basic/Standard 完全正常工作或类似的东西,但每次我切换回来时,免费版本从一开始就优于它。

有什么建议吗?出于某些 st运行ge 原因,免费版是否比基本版或标准版更强大,或者我是否需要在起床后配置不同的东西并且 运行 使用基本版或标准版?

免费层和 Basic/Standard 层之间的显着区别是免费使用未公开数量的共享核心,而 Basic/Standard 具有定义数量的 CPU 核心(1-4根据您支付的金额)。与此相关的事实是,Free 是共享实例,而 Basic/Standard 是私有实例。

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

这很有可能是侥幸。也许您的居住地目前位于一个相对较新配置的服务器上,该服务器尚未被租户填满。也许您只是碰巧与不常做的租户合租。谁知道?但是,如果服务器实际上处于实际负载下,我想您会看到免费层的响应时间甚至比 Basic/Standard.