超出了heroku worker任务内存配额

时间:2013-07-15 12:38:40

标签: ruby-on-rails-3 memory-management heroku worker

我在heroku上部署了一个rails应用程序。我们有一个工作者(作业:工作),它连续创建七个管理器对象(每个任务一个),并在无限循环中运行它们的方法。这就是主要代码的样子(无论如何都是它的基本部分):

loop do
  begin
    Manager.subclasses.each do |manager_klass|
      manager_klass.new.process
    end
  #exception handling here
  end
  sleep(1)
end

没有任何任务像Model.all那样做。我读过许多关于红宝石泄漏和膨胀的文章,并且避免了大部分内容。

我的工作人员的Heroku日志包括: R14 - 超出内存配额;

这在工作人员运行大约3小时后开始显示(这是内存泄漏/内存堆积的实质证明)。

我尝试过memprof(不适用于ruby 1.9),bleak_house(鞋子无关信息)和其他使用linux命令记录内存快照的宝石(不能用于heroku)。

我已经查看了有关此问题的stackoverflow上的所有答案,没有任何帮助。

关于我在七个经理中工作的具体案例的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试使用此功能查看内存使用情况:https://devcenter.heroku.com/articles/log-runtime-metrics。另请参阅此https://blog.heroku.com/archives/2013/3/19/log2viz他们应该一起确认您的内存泄漏。

不同版本的Ruby会有帮助吗?

另外:为什么要创建“分工”,可以这么说?你的工人不是被充分利用了吗?你真的需要同时处理7个工作(而不是有更多的工人)。