Azure Web App.免费比基本和标准更快?

Jes*_*per 2 c# asp.net-mvc wcf azure

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

令我惊讶的是,一旦从Free更改为Standard或Basic,代码运行速度明显变慢.我选择了最小的实例,但仍然期望它们比Free选项表现更好?

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

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

在每次测试中,我尝试了5-10次但没有任何响应时间减少.我想过在Basic/Standard完全正常运行之前是否需要等待几个小时,或者类似的东西,但是每次我切换回来时,免费版本都会从一开始就超过它.

有什么建议?免费版本出于某种奇怪的原因比Basic或Standard更强大,或者我在Basic或Standard上运行后需要配置不同的东西吗?

Chr*_*att 7

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

我最好的猜测是基于这个,因为免费服务器你将拥有多个不同的用户和应用程序,他们可能有漂亮的牛肉规格.他们的CPU可能是8核Xeon,甚至可能有多个CPU.最有可能的是,Azure并未强制执行任何上限,而是依赖配额(Free层的60分钟CPU /天)以及服务器上的总体需求以限制CPU使用.换句话说,如果您的网站是目前唯一正在做任何事情的网站(当然不太可能,但为了示例),您可能会利用盒子上的所有8个核心,而当您移动时超过基本/标准你很难限制到1-4.处理XML实际上非常重CPU,所以这似乎符合我的假设.

更有可能的是,这是一个侥幸.也许你的驻留目前是在一个相对新配置的服务器上,但还没有填满租户.也许你恰好正在与那些做得不多的租户分享.谁知道?但是,如果服务器实际上处于实际负载之下,我想你会发现免费层的响应时间比基本/标准更差.