何时适合添加单独的数据库服务器,添加更多的Web服务器?

通常web项目开始很小,一切都在一台服务器上。 但是,如果网站变得stream行一台服务器是不够的。
所以,由于我没有这方面的经验,所以我想了解一下:
1.什么样的加载意味着我需要将我的MySQL DB移动到一个单独的服务器以及如何测量这个负载?
2.什么样的加载意味着我需要添加另一个Web服务器以及如何测量它?
3.大概,一台服务器可以有多less用户?

我在LAMP服务器上这样谈论简单的PHP应用程序:
* CPU:Athlon 3800+
* CPU详细信息:2 x 2.0 GHz
* RAM:1 GB RAM
*硬盘:2 x 160 GB(RAID 1软件)

这一切都取决于…你的数据集的大小,使用模式。

衡量最终用户体验。 设置可接受的页面加载时间,testing每5-10分钟,绘制图表。 这一切都取决于您的业务可以容忍什么,什么时候变得不可接受。

在mysql中启用slow_query,可能你不希望每天有超过5-10次的查询需要10秒以上的时间。 或者也许你有一些夜间报道,你可以容忍这些?

可能你想要生成一些统计信息 – 例如与munin的CPU使用情况,iostats,系统负载,networkingstream量,HTTP处理数量,mysql线程数量,页面生成时间,以及在一天/周期间如何改变。 你可以指出高峰时间,并可以看到如何增加更多的内存/调整MySQL更改您的页面加载时间。

在你的情况下,平均负载> 2或3意味着系统超载[但这是高度讨论]

看这里的一些提示。

开始规划更多服务器和可扩展体系结构的时候是,当你坐下来制定规范时(你想要有一个具有模块化function的代码库,所以很容易把事情分开,但至less有一个“web前端“结尾”和“数据库后端”是一些级别的模块化)。

一旦你有了这个,并且你正在一个服务器(数据库和前端)上运行,你可以监视不同的操作需要多长时间,以及机器上的负载。 一旦负载开始逐渐超过“CPU数量”,你肯定会陷入“我们应该分裂”的境地。 如果您保存了历史数据,则可以推断未来的情况,并决定一次增加更多容量,容量将大致按需要增加。

在unix机器上,“平均负载”是(大约)运行队列的平均长度(即,准备运行的进程,但是等待一个时隙;通常不是物理地在CPU中的CPU的数目框)。 如果持续高于所拥有的CPU数量,则至less有一个指示器表示该盒子已超量使用。 这不是唯一的措施,但作为一个硬性指导,它不是太糟糕,系统为你计算。

除了负载之外,还有一点需要注意的是100%的正常运行时间 。 如果您需要在服务器重新引导期间保持站点状态不变,那么您需要一些冗余/集群

我们有我们的networking服务器运行虚拟机,所以我们只使用两个(约200个站点)冗余,并可以增加“服务器资源”,如果有必要处理负载,而不需要引入第三个networking服务器(到一点) 。

如果你需要提高性能, 最简单的方法就是把MySQL分离出来 ,放到一个单独的盒子里。 然而,这也意味着你的网站会下降两倍 (即 – 当任何一台服务器重新启动/失败时,它们都会closures)

当您的容量规划告诉您在当前的基础设施用完之前,您的新服务器的交付时间大约是您的交付时间的3倍时,可以升级。

你也应该看看mod_proxy和mod_disk_cache来考虑你的规划。 放置在一个独立的分区与应用程序发送正确的头(caching控制等)这是一个非常好的和简单的方法来提高你的应用程序的性能在Apache,因为任何caching(和可高速caching)的页面可以作为静态。

不要尝试使用mod_mem_cache,因为它对caching共享的原因有更糟的性能。

它使我运行的一个大容量虚拟系统的负载降低了20-30%。 只要注意mod_disk_cache参数,因为如果设置错误,它们可能会显着增加iostats。