在Azure网站的上下文中,是一个2“;“小”;标准实例设置优于1“;“中等”;服务器实例设置?

在Azure网站的上下文中,是一个2“;“小”;标准实例设置优于1“;“中等”;服务器实例设置?,azure,azure-web-app-service,Azure,Azure Web App Service,我读了很多关于Azure中至少有2个网站实例的重要性的文章,其中一个原因是MS只会遵守SLA(如果有),因为能够修补一个服务器,而另一个服务器可用 然而,我们目前有严格的预算,目前有一个中型服务器和更大的RAM。我一直相信,更大的服务器和更多的内存总是更好。同样,同一台机器上的2个磁芯也可能更快 我们已经注意到这种奇怪的循环,但现在说这是否是由于MS patching造成的还为时过早 假设我的应用程序是一个MVC3/EF5/SQL Azure应用程序,有10个用户并发,并且处理是严格向前的,即简

我读了很多关于Azure中至少有2个网站实例的重要性的文章,其中一个原因是MS只会遵守SLA(如果有),因为能够修补一个服务器,而另一个服务器可用

然而,我们目前有严格的预算,目前有一个中型服务器和更大的RAM。我一直相信,更大的服务器和更多的内存总是更好。同样,同一台机器上的2个磁芯也可能更快

我们已经注意到这种奇怪的循环,但现在说这是否是由于MS patching造成的还为时过早

假设我的应用程序是一个MVC3/EF5/SQL Azure应用程序,有10个用户并发,并且处理是严格向前的,即简单的数据库查询等

在Windows Azure的环境中,假设有预算限制,1个中型(2 x 1.6Ghz内核和3.5 GB RAM)服务器会比2个小型(1 x 1.6Ghz内核和1.75GB RAM)web服务器实例好吗

谢谢

编辑1

我注意到这个问题因为基于观点而吸引了2票。这个问题是为了吸引来自这一领域实际经验的报告,这当然会影响到人们的意见。这对我和其他人的工作都非常有价值

编辑2

对SLA很感兴趣。我担心当MS进行更新时,会有一个实例在更新过程中消失。那么在这种情况下会发生什么呢?Azure是否只是克隆了另一个实例?另外,在一个实例正在处理较慢的进程的情况下,它可能正在等待类似DB事务的东西。对于实例2,LB将重定向到实例2。从逻辑上讲,这听起来很好。它仍然可以使用会话变量,因为MS已经实现了“粘性会话”


我很好奇,您建议使用一个“小”实例。1.75GB的RAM对于一台服务器来说似乎太小了,1个内核的带宽为1.6GHz。这里需要做一些内存监控。出于兴趣,主应用程序DLL加载到RAM中的次数是多少,是不是只有一次,而不考虑用户数量?可能是一个基本问题,但只是想检查一下。当一个人的笔记本电脑是16GB和8核(i7)时,让你思考。然而,我认为笔记本电脑上有很多不同的膨胀进程,而不是服务器上的许多小进程。

除非你的应用程序特别需要内存,否则我会选择一个小程序,并配置自动缩放功能,以便根据需要启动更多服务器。那就关注一下统计数据吧。您可以查看当前使用的内存量;如果它比一个小实例的内存少,那么额外的内存就没有任何好处

网站的SLA不需要两个实例,该规则仅适用于云服务

我发现您可以在单个小实例上做大量令人惊讶的工作;我有几个这样的系统,它们只使用了几厘的容量,甚至每分钟有数百个请求。对于10个用户,您甚至不可能让IIS使用多个线程,除非您有一些非常慢的响应(我假设您没有使用异步),因此第二个内核将处于空闲状态。
再举一个例子,看看Troy Hunts关于haveibeenpwned.com的详细博客,它运行在小实例上。

回答得好;如果我必须添加任何内容,我会注意到一些应用程序受益于更大SKU(如Medium)的多虚拟核心功能,但每个应用程序都会有所不同。感谢您的完整回答。我已经把我的回复作为新的编辑。@JeffWilcox,谢谢你。MVC3/EF5/SQL Azure应用程序的评论是否正确?不同的请求能否同时使用两个内核,从而提供一个并行资源?@SamJolly我将在稍后的回答中进一步说明。但是,简而言之,大多数web应用程序大部分时间都在等待外部资源,如数据库和网络,因此不会受到CPU的限制。类似地,大多数情况下,除非您在内存中进行了大量的数据处理或有错误的代码,否则您不会占用太多内存。最好的办法是把它旋转起来,看看数据。正如我所说,我在@Frans上安装了每分钟数百个请求的系统,谢谢。。。。期待您的详细答复。你正在分享一些最有用的经验。