一个LAMP服务器在处理高流量时需要设置哪些配置?

3
我被聘请为客户制作类似Groupon的网站,使用 PHP 和 MYSQL 进行开发。我计划在亚马逊 EC2 服务器上托管它。我的客户告诉我他会给大约10k名顾客发送电子邮件,因此我的网站需要能够处理来自这些邮件的点击量激增。我有两个问题:
1)我应该选择哪种亚马逊服务器实例?目前我正在使用小型实例,我不知道在电子邮件爆发的一周内是否需要升级到大型实例?
2)LAMP 服务器需要设置哪些配置?例如,Amazon 服务器、Apache、PHP 或 MySQL 是否有最大连接限制需要我调整?
谢谢!
1个回答

3

从技术上讲,如果您想要一个高度可扩展的系统,将静态页面、PHP和数据库放在同一实例中并不是最好的选择。尽管如此,如果预算有限且高可用性不是问题,则在实践中可能会奏效。

正如您所说,一种选择是针对您预计到来的重负载流量,在更大的实例大小上重新启动服务器。通常情况下,这已经足够好了。您的问题在于您不知道将会出现的确切流量模式。您会得到一定比例的用户在其计算机前等待,并直接进入站点。其余的用户则会随着时间的推移逐渐进入。如果可能的话,让您的客户端在大多数用户睡觉时发送电子邮件,可以通过避免激增来在一定程度上帮助您。

以2,000名用户在10分钟内访问您的网站为例,我怀疑一个没有被优化的网站能够应付,很可能存在傻瓜瓶颈。数据库通常是问题所在,一个良好大小的内存缓存通常可以帮助解决这个问题。

总之,亚马逊和GAE等供应商提供了许多架构设计和功能,只要您具备正确设计的后端,就可以很少担心可扩展性问题,因为这些问题一般都会得到解决。

如果将数据库与Web服务器分离,您将能够将Web服务器实例放在弹性负载均衡器后面,并按需扩展实例。尽管没有任何特定功能可以帮助您进行缩放数据库,但存在标准的缩放数据库模式,除了数据库实例外。您可能想尝试Amazon Mechanical Turk,它基本上是许多人为通常非常小的费用执行经常微不足道的任务(如导航到网页,单击此处等)。这不是模拟真实流量的坏方法。话虽如此,您可能需要重复几次,因此最好使用负载测试工具。并且请记住,您不能使用时间分片实例来进行负载测试另一个时间分片实例...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接