【发布时间】: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