如何使我的网络应用程序更加强大,以应对意外的流量高峰?

时间:2011-03-23 05:46:30

标签: ruby-on-rails web-applications heroku cdn

我在HN问过这个问题,但没有得到太多建议。

我是网络应用开发中的n00b。尽管如此,我一直在开发一个应用程序(使用Heroku部署的Ruby on Rails +),得到了一些非常积极的反馈,所以我想为它投入更多的资源。

但是,我不是系统管理员或类似的任何东西,所以我不确定采取什么步骤以确保我的应用程序是健壮的,并且可以处理意外的流量高峰而不会崩溃。

基本上,我想为处理意外流量高峰等方面的最坏情况做准备。

任何特定的指针(尤其是Heroku)都会有所帮助!

3 个答案:

答案 0 :(得分:2)

在您的应用上加载典型网页的http请求的整体分布是什么?在Mozilla Firebug / Chrome Dev Tool中打开它并分析正在发出的http请求。

如果你看到每个页面都有很多静态内容被加载(比如CSS / images / JS)那么它就表明存在缓存问题(静态内容没有被缓存)。

你甚至可以将静态内容移动到CDN(http://en.wikipedia.org/wiki/Content_delivery_network)这两个是悬而未决的成果。

下一步是确保您的应用可以托管在多台计算机上(例如,它不依赖于每台主机上的相同http会话和类似的东西)。这样您就可以添加更多主机来满足需求。

答案 1 :(得分:1)

为确保您的应用在所有开发和部署期间保持稳定,请编写单元测试,功能测试和集成测试(有很多宝石可以处理这个问题,比如shoulda,rspec,黄瓜,水豚,硒......)。

我也会使用Hoptoad进行错误通知。 1个项目(https://hoptoadapp.com/account/new/Egg

免费提供

监控您网站的下一件事可能是NewRelic(http://newrelic.com/)。它概述了查询需要多长时间以及应用程序瓶颈的位置。

答案 2 :(得分:0)

答案非常简短:从理论上讲,您需要了解容量可伸缩性性能。 在练习中,你可以在heroku(或引擎)上启动更多实例,但你将为它支付更多的钱。