【问题标题】:How can I make my web app more robust to handle unexpected traffic spikes?如何使我的 Web 应用程序更加健壮以处理意外的流量高峰?
【发布时间】:2011-07-21 01:18:24
【问题描述】:

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

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

但是,我不是系统管理员或任何类似的人,所以我不确定应采取哪些步骤来确保我的应用程序健壮并且可以在不崩溃的情况下处理意外的流量高峰。

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

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

【问题讨论】:

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


    【解决方案1】:

    为确保您的应用在所有开发和部署过程中保持稳定,请编写单元测试、功能测试和集成测试(有很多 gem 可以处理这个问题,例如 shoulda、rspec、cucumber、capybara、selenium...)。

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

    接下来要监控您的网站可能是 NewRelic (http://newrelic.com/)。它可以让您大致了解哪些查询花费了很长时间以及您的应用程序的瓶颈在哪里。

    【讨论】:

      【解决方案2】:

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

      如果您发现每个页面都加载了很多静态内容(如 CSS / images/JS ),则表明存在缓存问题(静态内容未缓存)。

      您甚至可以将静态内容移动到 CDN (http://en.wikipedia.org/wiki/Content_delivery_network) 这两个是唾手可得的成果。

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

      【讨论】:

        【解决方案3】:

        非常简短的回答:理论上您需要了解容量可扩展性性能。 在实践中,您可以在 heroku(或引擎)上启动更多实例,但您会为此付出更多的钱。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-04
          • 2019-11-10
          • 1970-01-01
          • 1970-01-01
          • 2019-10-25
          • 1970-01-01
          相关资源
          最近更新 更多