2012-02-10 22 views
4

将轨道2应用程序迁移到轨道3时,我遇到了大量使用的内存增加。 经过一番研究,我发现助手是问题所在。在视图中取消任何帮助者的注释可以加速一切。助手在轨道中使用大量内存3(.2)

事情我试图找到真正的问题:通过重构Model.all用法一些更快的代码

  • include_all_helpers =假
  • 辅助文件
  • 清理代码禁用部分

我得到了一个理论,现在有些帮手可能会被重命名或删除,rails开始搜索它们并开始搜索模型/控制器作为救援。

页面请求最多需要5秒钟,并使用2 GB的内存。

任何人都知道导致此问题的原因以及如何解决或调试它?

+0

我发现使用的内存量巨大是由于在辅助方法中缺少方法/缺少变量。而不是错误处理它只是淹没了一段时间的内存,并最终崩溃。 发现崩溃的应用程序,并等待20分钟的服务器恢复,结果FINALLY与一些TemplateError处理程序的堆栈跟踪,纠正了错误,并再次平滑页面。 – Vikko 2012-02-10 15:47:15

+0

我不会说这是Rails助手的一般问题。不知道我们在谈论什么帮助者,很难说出问题在哪里。我最好的猜测是递归和对象保存在内存中,因为它们仍然被引用。同时检查你的宝石的助手。 – iltempo 2012-02-11 09:16:22

+0

在控制器或模型中不搜索助手。 – iltempo 2012-02-11 09:17:40

回答

1

通过将该配置中/初始化/ anti_freeze_hack.rb修正:

module ActionDispatch 
    module Routing 
    class RouteSet 
     alias inspect to_s 
    end 
    end 
end 

Amala用于连接我来说是正确的话题:d