承受发射日交通爆发的最佳做法

我们正在为客户devise一个网站(一次),预计在第一天就能获得相当数量的stream量。 有新闻稿,人们正在写博客等。我有点担心,我们将在第一天面临崩溃。 你会看到什么主要的事情(事先没有真正的交通数据),你可以在大发射后保持站立。

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

为了准备或处理尖峰(或峰值)性能,我首先要确定你是否准备好通过一些像jmeter这样的简单的性能测试。

您可以轻松设置并开始使用,无论您是否处理预期的高峰负载,都将为您提供早期指标。

然而,考虑到你的时间限制,其他步骤将是准备将吸引最高关注的静态版本的内容(如新闻稿,如果你的发布日)。 同时确保你正在最好地利用客户端缓存(减少1个请求到你的服务器可以使所有的差异)。 网络已经设计为极高的可扩展性和有效的使用内容缓存是在这些情况下最好的朋友。

当新事物冷静下来的时候,在新的“卫报”网站的设计中,软件工程收音机上的高可扩展性播客就非常棒。

祝你好运

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

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

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

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

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

祝你好运,这将是一个学习的经验!

有一个测试阶段,你允许尽可能多的用户,你可以处理,衡量您的网站的性能,找出错误之前,你上线。

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

我个人会做一些事情

1)放入某种负载均衡器/数据库复制系统

这意味着你可以让你的服务跨越多个服务器。 不能永久拥有多台服务器? 使用Amazon E3 – 对于像这样的事情来说是很好的(切换到更多的服务器来处理负载)

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

例如,如果您的搜索效率低下 – 当负载达到一定水平时将其关闭。 “对不起,我们很忙,以后再试一次搜索”

3)加载测试…使用类似ApacheBench的压力来测试你的服务器。

4)就我个人而言,我认为切换“Keep-Alive”连接更好。 它可能会略微降低整体性能,但是 – 这意味着,如果网站对少数人有效,而其他网站则会超时,那么每个人都会得到不一致的服务,如果达到这个级别的话

Linux格式在“如何生存”中写了一篇很好的文章,这在过去我觉得很有用。 它以PDF格式在线提供

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

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

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

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

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