我的合同是为我的客户制作一个groupon克隆网站。它是用PHP与MYSQL一起完成的,我计划将它托管在Amazon服务器上。我的客户警告我,他将向大约10,000名客户发送电子邮件,因此我的网站需要能够处理那些电子邮件中的点击量激增的问题。我有两个问题:
1)我应该选择哪个Amazon服务器实例?现在我是在一个小的例子,我想知道我是否应该升级到一个大的实例为一周的电子邮件爆炸?
2)需要为LAMP服务器设置哪些配置。例如,Amazon、Apache、PHP或MySQL是否有我应该调整的最大连接限制?
谢谢
发布于 2011-12-16 02:29:30
如果服务器上没有详细的使用和加载模式,就不可能给出一个明确的答案,但是有些可能对您有用的想法:
很可能不是每个人都会在同一时间打开他们的电子邮件-所以你可能可以假设这10k点击将在一段时间内分发。此外,我认为所有的电子邮件都是一次发送,以给人们一个平等的机会,无论你提供什么。
在体系结构方面:我建议将Amazon的Linux作为操作系统--它是相当精简的,内存占用很低,在其存储库中包含了相当新的包,并且性能很好。对于内存不足3GB的实例,采用32位操作系统。
我建议使用FastCGI (使用php)的高负载服务器在Apache上使用nginx。这将使您能够处理比Apache更多的并发连接,并且资源使用率更低。如果您的内容是高度动态的,一定要设置一个操作码缓存(例如APC)。
尽可能缓存任何内容--特别是如果所有的访问者都会看到相同的内容(例如优惠券/广告)。清漆是一个很好的选择(尽管,如果您使用nginx,它确实有能力进行一些缓存,尽管它不提供Varnish的选项)。根据内容的性质,您甚至可以考虑生成一个静态副本,并在S3/Cloudfront上提供它。
如果可能的话,您可能需要考虑将您的数据库放在单独的服务器上,以便在需求超出您的期望时可以使用自动标度来扩展您的want服务器。您还可能希望使用spot实例来补充您的主服务器(S)。
您可能会发现将一些内容(例如图像)卸载到Cloudfront是有益的--取决于设置的瓶颈,这可能大大减少服务器的网络和磁盘使用(请记住,小实例具有“中度”I/O)。如果有磁盘瓶颈,可以考虑在RAID中设置多个EBS卷以提高性能。
另外,请记住,在EC2上垂直地从一个小实例扩展到一个大型实例是相当容易的(尽管典型的方法确实有几分钟的停机时间,这可能是可以避免的)。
正如@uesp所建议的,您肯定希望加载测试您的服务器。如果您有许多不同的页面将被访问,您可以设置一个URL列表,并让围城随机访问这些-这将提供一些实际的性能指标。
发布于 2011-12-15 18:31:20
不幸的是,没有一个答案,因为它取决于您的应用程序(您所提供的服务)和确切的流量(是每个客户只加载一个页面,还是在5分钟或24小时内加载10k )。例如,连接到大型未优化数据库的复杂未优化Ruby应用程序将需要大量资源,而一个简单的静态HTML/映像可以与运行在低端服务器上的单个lighttpd服务器一起使用。
如果您已经在服务器上安装了应用程序,那么您可以/应该做的是使用ab (ApacheBench)、攻城或任何其他类似程序对系统进行基准测试。若要获得性能的粗略上限,请在本地服务器上运行它,以消除网络性能。根据应用程序的不同,您可能需要特定的测试设置,比如设置cookie/会话信息来正确评估性能。您还可能希望测试应用程序的不同部分(静态/动态、慢/快、登录/退出等)。如果适用的话。
测试之后,您应该有一些关于您可以处理的流量的粗略数字,然后从那里决定是否需要一个更大的系统。测试还应该显示您是否需要调整任何应用程序/服务器参数,比如连接限制,以及帮助评估参数调整的有效性。
最后,它总是在成本和性能之间的权衡,你必须决定你需要多少绩效,以及你愿意付出多少。
https://serverfault.com/questions/341298
复制相似问题