Rails延迟任务(delayed_job)的内存消耗问题

7
我们的delayed_job插件出现了巨大的问题 - http://github.com/collectiveidea/delayed_job/ 当我们使用"ruby script/delayed_job start"启动任务时,该进程永远不会释放它获取的RAM。
因此,它从10%开始,到25%,到80%,即使没有要处理的作业,也永远不会释放RAM。
有什么想法可以解决这个问题吗?
谢谢!
(PS:RAILS_ENV = production script / delayed_job start对于我们启动delayed_job工作程序无效)

为什么RAILS_ENV=production script/delayed_job start对你不起作用?否则,您就在开发中运行它。在这种情况下,这个问题出现在多长时间内? - wuputah
我发现有时候摇一下 GC.start 这个魔法棒可以促使垃圾回收器开始工作。 - tadman
你的应用程序可能存在内存泄漏问题。在Rails指南中有一些关于调试此问题的提示(http://guides.rubyonrails.org/debugging_rails_applications.html#debugging-memory-leaks)。 - Jason stewart
@Jason - 即使延迟作业队列完全为空,这种情况仍会发生。 @tadman - 你所说的GC.start是什么意思?我对这一切都很新 :( @wuputah - 这就是我得到的 http://pastebin.com/xfPWRKAX - 然而当我测试它时,在使用另一个命令启动后它能够正常工作(在生产环境中运行)。 - stringo0
1个回答

3

根据 IRC 上 @ReinH 的建议,Ruby 永远不会释放内存给操作系统。

所以我目前知道的唯一解决方案是每隔一段时间手动重启 delayed_job 插件。

@ReinH 还指出了 delayed_job_spawner 插件,这似乎是另一个可行的解决方案 - http://github.com/woahdae/delayed_job_spawner


哇,我从来不知道这个问题,但现在遇到了。看起来他们需要解决这个问题。这是一个与此问题相关的链接:https://github.com/collectiveidea/delayed_job/issues/336 - Jonathan
FYI:Rails 3 中的延迟作业似乎对我们来说运行良好 - 要么它没有这个问题,要么我们在设置方面做了一些不同的事情。 - stringo0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接