【问题标题】:How do you decide when to upgrade servers vs. add more servers?您如何决定何时升级服务器与添加更多服务器?
【发布时间】:2014-04-29 16:44:17
【问题描述】:

我经营着一个小型 SAAS 网站,客户数量(希望)不断增加。现在,我有三个 Amazon EC2 实例。一个微型实例运行 Web 前端(Rails),一个小型实例运行 API 层(Rails),一个微型实例运行数据层(Postgres)。请不要评判;这足以满足我目前的需求。

随着我添加更多客户,我知道最终我将不得不 a) 增加现有服务器的马力和/或 b) 对 Web/API 服务器进行负载平衡并将数据库服务器集群化。

我的问题是 - 从成本/收益的角度来看,您如何决定何时升级服务器(即微型--> 小型--> 中型--> 大型)与添加其他相同类型的服务器?我了解负载平衡有很多好处(例如在服务器崩溃或可用区出现问题时让您保持在线)。

显然,亚马逊对内存和处理能力更强的服务器收费更高,但他们也对 ELB 和类似的服务收费。如果我今天在每层增加两台服务器,那将使我的成本 + ELB 的成本(不包括数据传输成本)翻倍。升级到中等或更好的服务器似乎最适合早期出现的瓶颈。

对于何时建立而不是退出,有哪些好的经验法则?请记住,我选择的软件( Rails)在处理大量数据时会占用大量内存。

【问题讨论】:

  • 我想你在最后一句话中回答了你自己的问题。但一般的经验法则是:它是特定于应用程序的。

标签: amazon-ec2 amazon cluster-computing upgrade load-balancing


【解决方案1】:

您提到了横向扩展(冗余)的一些优点,但忘记了缺点,特别是更复杂的部署和增加的开销(使用了更多的操作系统资源)。

这不仅是向上 vs 淘汰,而且是每一层的向上 vs 淘汰。 db 层通常希望扩展,因为它避免了集群/复制问题。应用层可以采用任何一种方式。 Web 服务器很好地横向扩展,因为它们处理请求并且请求是分开的。

具体到亚马逊和他们现在的具体定价(https://aws.amazon.com/ec2/pricing/),似乎扩大与扩大规模差不多,扩大到大约大略领先。

【讨论】:

  • 例如,我最近将 API 服务器从微型移动到了小型。忽略 188 美元的固定成本,每小时的价格增加了 44%,但 RAM 增加了 177%。这是一个非常明显的胜利,特别是因为内存造成了瓶颈(即我的笔记本电脑有 8 GB RAM,但在生产中没有性能问题)。
【解决方案2】:

向上扩展有更快的 CPU + 更多 RAM 的好处,因此您的应用的性能可能会因此而提高。是的,有时 out vs. up 会胜出,但从我的角度来看,我们选择尽可能扩大规模(我们也在 AWS 上),因为每次我们都会注意到我们的应用程序的性能提升,除了随着我们用户群的增长而允许额外的容量。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2012-02-29
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-04
    • 1970-01-01
    相关资源
    最近更新 更多