我读了很多关于在Azure中至少拥有2个网站实例的重要性,其中一个原因是,MS只会尊重SLA(如果有的话),因为能够修补一台服务器而另一台服务器可用。< / p>
但是我们目前有严格的预算,目前有1台具有更大RAM的中型服务器。我一直认为,拥有更多RAM的更大服务器总是更好。此外,同一台机器上的2个核心也可能更快。
我们已经注意到奇怪的回收,但现在说这是否是由于MS修补还为时尚早。
假设我的应用程序是一个具有10个用户并发性的MVC3 / EF5 / SQL Azure应用程序,并且处理是简单的,即简单的数据库查询等。
在Windows Azure环境中,假设预算限制,1个中型(2 x 1.6Ghz内核和3.5 GB RAM)服务器将优于2个小型(1 x 1.6GHz Core和1.75GB RAM)Web服务器实例。
感谢。
编辑1
我注意到这个问题以意见为基础吸引了2票。这个问题旨在吸引来自该领域真实经验的报告,这当然可以提供意见。这对我的工作和其他工作都非常有价值。
编辑2
对SLA感兴趣。我担心MS何时进行更新,然后一个实例会在发生这种情况时消失。那么在这种情况下会发生什么? Azure只是克隆了另一个实例吗?此外,在一个实例正在处理较慢的进程的情况下会发生什么,它可能正在等待像DB事务这样的事情。使用2个实例,LB将重定向到实例2.逻辑上,这听起来更优越。它仍然适用于会话变量,因为MS实施了“粘性会话”。
我很感兴趣你推荐使用“小”实例。对于服务器来说,1.75GB RAM看起来很小,而1.6GHz则是1核心。需要在这里进行一些内存监控。出于兴趣,主要应用程序dll加载到RAM中的次数是多少次,无论用户数量多少?可能是一个基本问题,但只是想检查一下。让你想到当一台笔记本电脑是16GB和8核(i7)时。然而,我认为笔记本电脑上存在许多不同的膨胀过程,而不是服务器上的更少和更小的过程。
答案 0 :(得分:3)
除非您的应用程序特别需要内存,否则我会选择一个小的并配置自动缩放以根据需要启动更多服务器。然后只关注统计数据。您可以查看当前使用的内存量;如果它比你用一个小实例得到的少,你就不会从额外的RAM中获得任何好处。
网站的SLA不需要两个实例,该规则仅适用于云服务。
我发现你可以在单个小实例上做大量的工作;我在这种设置中有几个系统,它们只使用几个容量,即使每分钟有数百个请求。有10个用户,你甚至不可能让IIS使用多个线程,除非你有一些非常慢的响应(我假设你没有使用异步),所以第二个核心将是空闲的。 再举一个例子,请看Troy Hunts详细的博客,关于在小型实例上运行的haveibeenpwned.com。