我签约为我的客户制作一个groupon-clone网站。它是用PHP和MYSQL完成的,我打算在Amazon EC2服务器上托管它。我的客户警告我,他将向大约1万名客户发送电子邮件,因此我的网站需要能够处理来自这些电子邮件的大量点击。我有两个问题:
1)我应该选择哪个亚马逊服务器实例?现在我在一个Small实例上,我想知道我是否应该在电子邮件爆炸的那一周将它升级为一个大型实例?
2)需要为LAMP服务器设置哪些配置。例如,亚马逊服务器,Apache,PHP或MySQL是否具有我应该调整的最大连接限制?
由于
答案 0 :(得分:3)
从技术上讲,如果您需要高度可扩展的系统,将静态页面,PHP和数据库放在同一个实例上并不是最佳选择。也就是说,如果预算很低而且高可用性不是问题,那么你可能会在实践中侥幸逃脱。
正如您所说,一个选项是在您预期会有大量流量的时间段内以更大的实例大小重新启动服务器。通常这很好用。您的问题是您不知道将来的流量的确切模型。您将获得一定比例的人,当他们到达时,他们会直接访问他们的计算机。随着时间的推移,其余的将会流入。让您的客户在大多数用户都在床上时发送电子邮件,如果可能的话,可以通过避免激增来帮助您。
如果我们假设有2000名用户在10分钟内访问您的网站,我怀疑一个尚未优化的网站会应对,那里很可能是一个愚蠢的瓶颈。数据库通常是个问题,大小合适的内存缓存通常会有所帮助。
总而言之,亚马逊和GAE等提供了许多架构设计和功能,通过正确设计的后端,您可以不必担心可扩展性,它可以为你大部分时间。
如果将数据库与Web服务器分开,则可以将Web服务器实例放在弹性负载均衡器后面,并根据需要设置该实例。除了数据库实例之外,还存在用于扩展数据库的标准模式,但没有任何特定功能可以帮助您。
你可能想尝试Amazon mechanical turk,基本上很多人会经常执行琐碎的任务(比如导航到网页点击这个等),费用通常很低。这不是模拟真实流量的坏方法。
那就是说,你可能需要重复几次,所以你最好使用负载测试工具。请记住,您无法使用另一个时间切片实例加载测试时间切片实例...