为同一个应用程序运行多个rails服务器

问题描述:

所以我想知道,Heroku可以运行多个dynos来处理越来越多的请求。这种可扩展性是最大的价值主张之一。为同一个应用程序运行多个rails服务器

是否可以在本地进行类似的操作?基本上,我正在开发一个应用程序,它运行了很多我正在测试的请求和计算。目前,大部分计算都是由Rails服务器运行的,所以请求使用分类的材料加载页面可能需要一分钟或更长时间。最后,我将使用delayed_job将这些计算转移到后台,但我仍在开发我的算法,因此我并未尝试进行此更改。

所以我想知道的是,我可以运行多个rails服务器,以便我可以点击一个网站,并在另一个运行这些计算?我尝试在不同的端口上打开两个端口,但它们不能同时运行(几乎不运行)。

任何意见非常感谢!

我的建议是现在开始使用后台作业方法。你所要做的就是在后台运行相同的代码。你应该可以在5分钟内完成。现在你可能花费了大量的时间用在代码上的其他解决方案上。一旦你开始使用delayedJob,bachgrouddrb或其他选项,你将不会回头。
这是一个很好的帖子在这里,可以帮助你:
http://www.tobinharris.com/past/2009/3/9/6-ways-to-run-background-jobs-in-rubyonrails/
Ruby on Rails: How to run things in the background?

是U可以通过做到这一点,例如:

$ for port in `seq 3000 3005`; do run server --on-port $port; done 

那么你将不得不从端口5个服务器3000到3005.然后使用一些反向代理来捕获一个端口上的所有请求,然后将它们发送到服务器。

你也可以尝试foreman来做到这一点,但恕我直言,如果你需要这样做的测试,然后有错误的应用程序设计不在服务器。也许你应该将一些任务移动到例如EventMachine并在外部进程中运行它们(例如生成一些文档或解析数据)。

我会回应其他人说,最终将您的计算分解为工人是很好的。我建议看看Resque作为delayed_job的替代方案。我们在开发中使用ResqueRedisToGo相结合,以及我们所有基于Heroku的生产应用。我们Euclid Inc.是Heroku和Redis的忠实粉丝。

在此同时,你可以得到赛道像开发行为与独角兽工头。我们再次在生产中使用Unicorn,使我们的基于Heroku的应用程序更加高效。

独角兽很容易配置。只需设置添加适当的宝石,并创建一个Procfile,并获得多个进程,无需更改代码。