Php 抵御发布日流量突发的最佳实践

Php 抵御发布日流量突发的最佳实践,php,mysql,linux,apache,lamp,Php,Mysql,Linux,Apache,Lamp,我们正在为一个客户(这一次)开发一个网站,该客户有望在第一天获得相当数量的流量。有新闻稿,有人在写博客,等等。我有点担心第一天我们会一败涂地。为了确保(在没有真实流量数据的情况下)在大型发布后能够保持站立,您会考虑哪些主要事项 细节:这是一个堆栈,使用内部开发的MVC框架。目前,这是在一台服务器上启动的,Apache和MySQL都在其中,但如果需要,我们可以将其分解 我们已经在安装和执行尽可能多的PHP级缓存。有些页面是相当查询密集型的,我们将其用作模板引擎。请记住,没有时间改变这些主要方面——

我们正在为一个客户(这一次)开发一个网站,该客户有望在第一天获得相当数量的流量。有新闻稿,有人在写博客,等等。我有点担心第一天我们会一败涂地。为了确保(在没有真实流量数据的情况下)在大型发布后能够保持站立,您会考虑哪些主要事项

细节:这是一个堆栈,使用内部开发的MVC框架。目前,这是在一台服务器上启动的,Apache和MySQL都在其中,但如果需要,我们可以将其分解


我们已经在安装和执行尽可能多的PHP级缓存。有些页面是相当查询密集型的,我们将其用作模板引擎。请记住,没有时间改变这些主要方面——这只是设置。我们应该注意哪些方面呢?

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

它易于设置和启动,并将为您提供早期指标,以确定您是否将处理预期的峰值负载

然而,考虑到您的时间限制,需要采取的其他步骤是准备吸引最高关注的内容的静态版本(如新闻稿,如果您是发布日)。还要确保您充分利用了客户端缓存(对服务器的请求减少一次会产生很大的不同)。web已经为极高的可伸缩性而设计,在这些情况下,有效使用内容缓存是您最好的朋友

当事情平静下来时,有一个关于高可扩展性的优秀播客


祝发布顺利。

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

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


另外,您的负载测试结果与您的预期流量相比如何?你能应付预期流量的两倍吗?五次?您获取和发布额外硬件的容易程度/速度如何?我确信业务需求是在发布期间不会失败,因此请确保您有大量可用容量。当负载稳定后,您可以随时释放它,并且您知道您需要什么。

我个人会做一些事情

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

这意味着您可以将服务分布在多个服务器上。不能永久拥有多台服务器吗?使用AmazonE3——它有助于为类似的事情做好准备(打开更多的服务器来处理负载)

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

例如,如果您的搜索效率低下,请在负载达到一定水平时将其关闭。抱歉,我们正忙,请稍后再试以进行搜索

3) 负载测试。。。使用类似的方法对服务器进行压力测试

4) 就我个人而言,我认为关闭“保持活力”连接更好。这可能会略微降低整体性能,但-这意味着,如果网站达到这个水平,每个人都会得到不一致的服务,而不是网站对少数人运行良好,而其他人会超时


Linux格式写了一篇关于“如何在slashdotting中生存”的好文章。。。我发现这在过去很有用。这是

我至少会考虑所有静态内容。在其他地方设置另一个vhost,并将所有图形、CSS和JavaScript加载到其中。你可以购买一些额外的周期,卸载该类型内容的服务。如果你真的担心,你可以注册并使用内容分发服务。现在有很多类似的,而且相当便宜

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


祝你好运。这将是一次学习的经历

有一个测试期,在测试期内,你可以允许尽可能多的用户进入,测量你的网站性能,并在上线前找出漏洞

您可以在私人测试版或谷歌风格的半公开测试版中明确控制用户数量,在测试版中,每个用户都可以向他们的朋友提供大量推荐。

研究使用-它是一个缓存反向代理服务器(类似,但更为单一用途)


我在它背后运行过一些相当大的站点,它似乎运行得非常好。

加强站点以获得高流量的基本第一步

  • 使用低成本的工具,如加载测试您的站点。至少,每小时应该有10万名独立访客。如果你在MSN主页上看到一则广告,那么你就应该能够处理每小时500K的独立访客

  • 将所有静态图形/视频内容移动到指定位置。Edgecast和亚马逊是两个很好的选择

  • 用于分析MySQL服务器以分析任何执行缓慢的查询。微小的改变可以带来巨大的好处


  • 在购买昂贵CDN上的空间之前先进行测量。你可能需要它,也可能不需要,即使你得到了它,你也可能用错了。量!