2008-09-22 52 views
16

我们正在为客户(一次)预计在第一天获得相当数量的流量的客户的网站上工作。有新闻稿,人们正在写博客等等。我有点担心,我们会在第一天面对我们的脸。你会看到什么主要的事情来确保(事先没有真实的流量数据),你可以在大规模推出后保持站立状态。承受发布日流量爆发的最佳做法

详细信息:这是一个L/A/M/PHP堆栈,使用内部开发的MVC框架。目前正在一台服务器上启动,Apache和MySQL都在其上,但如果需要的话,我们可以将其分解。我们已经安装了memcached,并尽可能多地执行PHP级别的缓存。有些页面是查询密集型的,我们使用Smarty作为模板引擎。请记住,没有时间来改变这些主要方面 - 这只是设置。我们应该注意什么样的事情?

回答

1

要准备或处理尖峰(或峰值)性能,我首先要确定您是否准备好通过一些类似jmeter之类的简单性能测试。

它很容易设置和开始,并会给你早期的指标,你是否会处理预期的峰值负载。

但是,考虑到您的时间限制,其他步骤将是准备将吸引最高关注度的内容的静态版本(如新闻发布,如果您的发布日)。同时确保您充分利用客户端缓存(对您的服务器减少1个请求可以发挥重要作用)。网页已经设计用于极高的可扩展性和有效的使用内容缓存,是您在这些情况下最好的朋友。

关于software engineering radio on the design of the new Guardian website,当事情平静下来时,有一个很好的可扩展性播客。

发射好运

9

先测量,然后优化。你做过任何负载测试吗?瓶颈在哪里?

一旦你知道了瓶颈,那么你可以智能地决定是否需要额外的数据库框或网络盒,现在你只是猜测。

此外,您的负载测试结果与您的预期流量比较如何?你能处理2倍的预期流量吗? 5倍?如何轻松/快速地获得&版本的额外硬件?我确信业务要求在启动时不会失败,因此请确保您有足够的空间容量,您可以随时在负载稳定后释放它,并且您知道您需要什么。

1

我最好,就个人而言,做某种负载均衡器/数据库复制系统的放了几件事情

1)

这意味着,你可以在多台服务器服务传播。不能永久拥有多台服务器?使用亚马逊E3 - 这是很好的投入到位这样的事情(开关几个服务器来处理负载)

2)的代码,在一些“高负荷”限制

例如,如果你搜索效率低下 - 当负载达到一定水平时将其关闭。“对不起,我们很忙,请稍后再尝试搜索”

3)加载测试...使用类似ApacheBench的东西来压力测试您的服务器。

4)我个人认为,切换“Keep-Alive”连接关闭效果更好。它可能会稍微降低整体性能,但是 - 这意味着不是有一些地方让网站能够对某些人而言,和其他人得到超时,每个人都得到一致的服务,如果它得到这一水平

Linux的格式做一篇关于“如何克服困难”的好文章......我发现过去有用。它是available online as a PDF

3

我会至少分解出所有的静态内容。在其他地方安装另一个虚拟主机,并将所有图形/ css/js加载到其上。您可以购买一些额外的周期卸载该类型的内容的服务。如果您真的担心您可以注册并使用内容分发服务。现在有很多类似Akamai的很便宜的。

另一个想法可能是利用apache mod_proxy在特定的时间内保持生成的页面输出。 APC也将非常有用。您可以使用输出缓冲捕获+页面上相关数据的上次修改时间,并使用APC缓存版本。如果该页面无效,则重新生成并再次存储在APC中。

祝你好运,这将是一次学习体验!

2

有一段测试期,您可以在尽可能多的用户中进行测试,测量您网站的性能,并在上线前找出错误。

您可以在私人测试版或Google风格的半公开测试版中明确控制用户数量,其中每个用户都有一些可以提供给他们的朋友的推荐人数。

0

看看使用Varnish - 这是一个缓存反向代理服务器(如鱿鱼,但更单一的目的)。我已经运行了一些相当大的网站,它似乎工作得很好。

1

基本的第一步,以加强您的网站高流量。

1)使用像https://browsermob.com/这样的低成本工具来加载测试您的网站。至少你应该看到每小时10万独立访问者。如果您从MSN首页获得广告,则每小时可以处理500K个独特广告。

2)将所有静态图形/视频内容移动到CDN。 Edgecast和亚马逊是两个很好的选择。

3)使用Jet Profiler来分析您的MySQL服务器以分析任何性能低下的查询。微小的变化会带来巨大的好处。

+1

在昂贵的CDN上购买空间之前先测量。你可能会也可能不需要它,即使你得到它,你可能会错误地使用它。测量! – 2010-08-29 01:35:03