Heroku |应用程序不同部分的不同性能参数

时间:2011-03-23 14:16:38

标签: ruby-on-rails performance ruby-on-rails-3 heroku rack

我有一个托管在heroku上的Rails 3应用程序,它有一个非常常见的配置,我有一个客户端面对我的应用程序的一部分说:www.myapplication.com和我的应用程序admin.myapplication.com的管理部分。

我希望我的客户端面对我应用程序的一部分速度很快,而且我并不关心我的管理模块有多快。我所关心的是,我不希望在我的管理网站上使用我的应用程序部分速度的客户端。

理想情况下,我的应用程序客户端有3个专用dynos,我的管理员端将有1个专用dyno。

有没有人对完成此任务的最佳方法有任何想法?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果拆分应用程序,您将共享两个应用程序之间的数据库连接。说实话,我只需要一个应用程序并给它4个dynos:)

此外,Dynos不会提高性能,它们会增加吞吐量,因此您可以在一秒钟内处理更多请求。

例如,

粗略 - 如果典型的页面响应是100毫秒,1个dyno可以每秒处理10个请求。如果您只有一个dyno并且您的应用程序突然每秒收到10个请求,则超出的请求将排队,直到dyno被释放以处理这些请求。还要求> 30秒将超时。

如果您添加第二个dyno请求将在2个dynos之间共享,因此您现在可以每秒处理20个请求(在理想世界中),等等,当您添加更多dynos时。

请记住,dyno是单线程的,所以如果它正在做某事 ANYTHING 即渲染页面,构建pdf并包括接收上传的图像等,那么它很忙,无法处理进一步的请求,直到它为止完成,如果你没有更多的dynos请求将排队。

答案 1 :(得分:0)

我的建议是将您的应用程序拆分为逻辑部分。拥有一个单独的管理界面应用程序是一件好事。

它不必与主应用程序位于同一个域中。它可能具有全局客户端IP限制或仅具有简单的全局Basic Auth。

为什么要将两件事情复杂化并将两件事情融入一个应用程序?这还允许您使用管理部件进行更多实验,并重新部署它而不会影响您的用户。