Rails 3应用,如何测量高负载下的稳定性

时间:2011-09-22 19:18:41

标签: ruby-on-rails-3 scalability benchmarking

嗨,我是一名新程序员,我一直在研究我将在未来几周推出的第一个真正的应用程序。该应用程序使用围绕照片共享的一些巧妙的想法,但基本上只是一个照片共享Web应用程序。我想找到关于小型轨道3应用程序可以处理什么类型的负载的信息,但我不知道从哪里开始。我是否需要运行基准测试来查找它可以处理的请求数量以及执行此操作的速度有多快?如何为他们的应用找到这样的统计数据?

最终,我想知道网站可以处理的最大流量,或者有朝一日可以处理的问题,以便通过我正在使用的工具来解决问题。如果网站无法处理数百个并发请求,我不想启动病毒式营销活动。我不是试图跳起枪来准备我还没有的大量流量,但是我真的希望对我的可用性和可扩展性如何具有一定的理解和想法。应用。

非常感谢!

3 个答案:

答案 0 :(得分:4)

这里更大的问题是你在哪里部署你的应用程序:

我使用nginx / unicorn在linode实例上托管我的一些。它的工作量大得多,但我喜欢它。我不打扰负载测试很多,但有时我用Siege(你可以用自制软件安装它,brew install siege来打击主页,以了解我正在使用的内容。

关于部署问题,我认为从Heroku获得付费托管会提升您对稳定性的一些担忧,升级您的应用设置以承受更大的负载。

您能否提供有关托管选择的更多信息?

答案 1 :(得分:1)

  

“xxxx应用程序可以处理的负载类型”

你是对的。要回答这个问题,我们测试!

在没有测试的情况下,我们不能简单地说出像我们的ruby应用程序那样广泛的东西,在heroku的2个dyno上运行,可以处理100个请求/秒,或100个并发用户。我们需要测试。扩展也可能是一个棘手的业务。如果没有测试,我们将不知道哪些组件可以很好地扩展,哪些组件不会。

首先,我们有我们的应用程序,即被测系统。我们已经在Heroku上运行,这使我们可以立即访问New Relic添加。我们可以尝试打开New Relic的免费版本来查看它给我们的信息。如果我们需要进一步深入研究,我们还可以在“调整会议”期间尝试付费版本。

然后我们只是错过了'驱动程序',即使用最常见的流程(上传图像,浏览图像,登录等)来驱动应用程序负载的过程。

首先,我们只需要1-N的最亲密朋友愿意在我们的网站上充当用户,同时我们会监控New Relic的所有活动。测量用户体验的响应时间,识别运行缓慢的查询,查看我们的应用程序花费时间的位置。

当我们厌倦了购买我们的朋友所有的啤酒来帮助我们时,我们可以看看使用负载测试工具自动化一些常见的业务流程。有商业版:Mercury LoadRunner,Borland SilkPerformer和Microsoft Team Test。

我们也可能会使用Watir或Selenium等功能测试工具,甚至可靠的wget或curl来创造负载。

我们可以使用我们的笔记本电脑或Amazon EC2作为加载代理,它可以通过运行我们的脚本在网站上生成用户流量。

它不一定要像所有这些一样难,但如果我们不小心确保我们正在测试正确的流程并且可能同样重要,测量我们的应用程序,测试通常会陷入泥潭。如果没有测量,我们将无法知道代码或配置是否发生变化,使事情变得更好或更糟。

免责声明:我从未有过生产Rails应用程序,但如果我这样做,我会使用New Relic来监控它。至少要开始,特别是因为我们已经在Heroku上了。

答案 2 :(得分:1)

我还没有尝试过,但我听说过:

http://blitz.io/

看起来不错,Heroku通过附加组件支持