我在heroku 上部署了一个rails 应用程序。我们有一个工人(jobs:work),它连续创建七个管理器对象(每个任务一个)并在无限循环中对它们运行方法。这就是主要代码的样子(无论如何它的重要部分):
loop do
begin
Manager.subclasses.each do |manager_klass|
manager_klass.new.process
end
#exception handling here
end
sleep(1)
end
没有一个任务做类似 Model.all 之类的事情。我已经阅读了许多关于 ruby 中的泄漏和膨胀的文章,并且避免了其中的大部分。
我的工作人员的 Heroku 日志包括: R14 - 超出内存配额;
这在工人运行大约 3 小时后开始出现(这是内存泄漏/内存积累的充分证据)。
我已经尝试过 memprof(不适用于 ruby 1.9)、bleak_house(与鞋子无关的信息)和其他使用 linux 命令记录内存快照的 gem(不适用于 heroku)。
我已经查看了有关此问题的所有关于 stackoverflow 的答案,没有任何帮助。
关于我的七名经理在同一份工作中工作的具体案例有什么想法吗?