什么时候开始向您的Web应用程序添加(或考虑添加)服务器? 从一台服务器(DB和Web)到多台服务器有什么困难?
例如:
大多数情况下,你从一个用于数据库和Web的服务器开始,然后将DB / Web分离到不同的服务器上,然后转到多个Web服务器(这会创build会话问题),然后可能是DB等的NAS等。
什么时候开始向您的Web应用程序添加(或考虑添加)服务器? …(从单个服务器…到多个)
想想看 :从一开始。
开始添加 :当你得到你的第一个“服务器太忙”的错误。 任何更早的事情都是不成熟的优化。
(除非您的networking应用程序是关键任务,在这种情况下,您可能不是从头开始,也不需要轮询serverfault.com社区。)
但严重的是,对于现代的消费者networking应用程序来说,“服务器太忙”实际上可能是一件好事。 它肯定不会伤害Facebook,Twitter或YouTube。 join服务器太早的危险是,你的应用程序永远不会像你所期望的那样受欢迎,而且你最终浪费了可能花费在function开发上的钱。
如果您是真正拥有networking媒体资源的幸运儿之一,那么(a)恭喜,并且(b)您可以从日志文件中衡量您的平均响应时间,并且可以采取更为公制的驱动添加服务器的方法。
就个人而言,我总是从数据库服务器开始一个单独的Web服务器。
(基于IIS6和SQL Server)
但是,我们在vmware服务器(实际上是3节点群集)上执行所有这些操作,而web服务器和db服务器只有1个vCPU和1GB RAM。 而且他们支持相当繁忙的一套网站(外部和内部网),没有太多的汗水。
但是我知道,如果我有一个普及的潮stream(有可能会发生一天!)我可以快速重新configurationVM更多的RAM和CPU。
在实践中注意:随着时间的推移监视你的performance。 跟踪变化,并积极主动。
什么时候开始向您的Web应用程序添加(或考虑添加)服务器?
当你在devise你的应用程序。 我看到太多的应用程序不是为了使用多个服务器而devise的,后面的逆向工程可能是可怕的。
确保你也在多台服务器上进行testing。 再次。 我看到许多应用程序在开发/testing中工作正常,只是因为无法处理负载平衡器或防火墙,组播未考虑到等问题而在生产中失败。
而添加另一个服务器的时间是,当你的容量pipe理统计数据表明你将在短时间内耗尽容量,你将需要添加另一台服务器。
你正在收集cpacity统计? 没有? 然后再与您的应用程序开发人员和基础架构pipe理人员讨论。
我不同意,等到你真的得到“服务器太忙”,并且激怒你的用户是正确的事情。 将新服务器添加到生产环境可能是一个漫长的过程,并且在启动之前一直等到出现错误才不是明智之举。
正如其他人所提到的那样,这个问题是模糊的,但是这个问题真的有一个非常简单的答案:
你需要添加另一台服务器,当前的限制开始花费你的钱。
如果你正在免费提供服务,那么真的没有必要增加额外的服务器。
如果您从服务中赚钱,那么您可以进行成本/收益分析:额外的服务器如何提高性能,以及将带来多less利润?
你应该做的一件事就是加载testing你现有的一台服务器应用程序,看看它能一次支持多less会话和用户。 一旦你知道了,你可以随着时间的推移监控这些相同的指标。 当你的数字开始接近已知的限制时,是时候开始准备部署新硬件了。 您需要考虑额外服务器的交付时间,以便在现有系统达到其限制之前进行部署。 这是一个非常概括的概述,John Allspaw在“能力计划的艺术”一书中详细介绍了这些细节。
话虽如此,我将把数据库服务器和Web服务器分解为各自的系统作为起点,然后分别进行负载testing以确定理论负载。 通常情况下,Web服务器将首先成为瓶颈,所以您的应用程序应该考虑到可扩展性。 这个问题提到会话,根据您使用的平台,有几种方法可以在服务器之间共享会话,将它们存储在中央数据库中,或者使用负载均衡硬件将相同用户引导到同一服务器,除非它变得不可用因为某些原因。
但是要回答“我们什么时候该知道该怎么做”的核心问题,那就是将所收集的指标与通过负载testing得出的已知限制进行比较。
没有关于你的应用程序的进一步的信息,很难给出任何具体的build议,但是这里有一些来自Brad Fitzpatrick在LiveJournal的基础设施(重点强调数据库负载均衡)的2005年的演讲幻灯片:
一般而言,从一个前端到多个前端要比将前端从(通常是数据库)后端分离更复杂。 但是,仔细使用负载均衡器和“粘性”会话可以使此过渡更容易。
至于“何时”,find的关键是衡量你的networking(和数据库)服务器的性能。 理想情况下,在一个具有现实stream量负载的testing平台上,看看性能下降到“不够好”的地方。 一旦现场网站的负载开始接近“不够好”,您就订购一个新的前端。
如果您大致了解何时需要新的服务器,以及stream量随着时间的推移会如何增长,您可以瞄准在需要之前部署新的服务器。 不幸的是,我不能给你任何硬性的数字,因为这些东西是非常依赖于你的设置的具体细节。