Rails后台任务开销

时间:2008-11-24 18:15:36

标签: ruby-on-rails

有没有人比较各种后台处理技术的开销?

背景/ RB,Starling,Workling MemcacheQ 魔豆 后台工作(Bj) delayed_job(Dj)

我将在片上实现其中一个,并想知道它们占用了多少内存,因此我可以将其考虑在我的决策中。

3 个答案:

答案 0 :(得分:7)

我也会对综合比较感兴趣,但我可以说的一件事是它的作者认为BackgroundRB已被弃用。在EngineYard,他们在遇到BackgroundRB的棘手问题后特别推荐BackgroundJob。我没有听到你提到的其他选项。

答案 1 :(得分:4)

这取决于您的Rails应用程序本身。

这些处理器中的大多数依赖于您的Rails对象,实质上会将整个Rails实例加载到内存中。您的应用程序内存将取决于模型的数量,任何插件的影响以及环境的主要气候条件。

我有256mb Slice运行几个Mongrels和BackgroundRB,发现后台进程使用了​​与Mongrel实例相同的内存。

我一直喜欢的一个选项是将您的预定逻辑放在Controller中,并使用wget或Curl通过Cron调用它。您可以利用现有的Rails应用程序,并且设置它的开销很小。在上述情况下我没有使用此选项的唯一原因是需要每5秒钟击中一次队列(Cron只能每分钟运行一次)。

答案 2 :(得分:2)

对于低维护,我喜欢Background Job。它在您的Rails进程中运行或通过cron运行,因此不需要监视守护程序进程。在我的服务器上,Bj目前正在使用35636 RSS(大约一个Rails过程值得)。

当我听说人们使用BackgrounDRB时,我总是感到惊讶,因为它基本上没有维护。