我签约为我的客户做一个groupon-clone网站。它是用PHP和MYSQL完成的,我计划将其托管在亚马逊EC2服务器上。我的客户警告我,他将向大约10000名客户发送电子邮件,所以我的网站需要能够处理来自这些电子邮件的点击激增。我有两个问题:
1)我应该选择哪个Amazon服务器实例?现在我在一个小实例上,我想知道我是否应该在电子邮件爆炸的那一周将它升级为大实例?
2) LAMP服务器需要设置哪些配置。例如,Amazon server、Apache、PHP或MySQL是否有我应该调整的最大连接数限制?
谢谢
发布于 2011-12-13 21:07:37
从技术上讲,如果您想要一个高度可伸缩的系统,那么将静态页面、PHP和DB放在同一个实例上并不是最好的方法。也就是说,如果预算很低,而且高可用性不是问题,那么在实践中你可能会逃脱惩罚。
正如您所说,一种选择是在您预期的高流量期间,在更大的实例大小上重新启动服务器。通常情况下,这种方法运行得很好。你的问题是你不知道即将到来的流量的确切模型。当它到达时,你会得到一定比例的人在他们的电脑前,他们直接去网站。其余的将随着时间的推移陆续到来。让你的客户端在大多数用户都在床上的时候发送电子邮件,如果可能的话,通过避免激增,将会对你有所帮助。
如果我们举个例子,比如说,2,000个用户在10分钟内访问你的网站,我怀疑一个没有优化过的网站是否能够应对,那里很可能存在一个愚蠢的瓶颈。DB通常是问题所在,适当大小的内存缓存通常会有所帮助。
总而言之,亚马逊和GAE等公司提供了许多架构设计和功能,使您能够正确设计后端,不必担心可伸缩性,它在很大程度上是为您处理的。
如果您将数据库从web服务器中分离出来,您将能够将web服务器实例放在弹性负载均衡器后面,并按需扩展实例。也存在用于扩展数据库的标准模式,尽管除了数据库实例之外,没有任何特定的功能可以帮助您做到这一点。
你可能想试一下Amazon mechanical turk,它基本上是很多人,他们会执行通常微不足道的任务(如导航到网页,点击这个,等等),通常只需很少的费用。这是一种模拟真实流量的不错的方法。
也就是说,您可能需要多次重复此操作,因此最好使用负载测试工具。记住,你不能用另一个时间切片实例来对一个时间切片实例进行负载测试...
https://stackoverflow.com/questions/8479245
复制相似问题