【发布时间】:2012-02-10 09:08:57
【问题描述】:
在将 rails 2 应用程序迁移到 rails 3 时,我发现使用的内存大幅增加。 经过一番研究,我发现助手是问题所在。取消注释视图中的任何助手将加快一切。
我试图找到真正问题的事情:
- include_all_helpers = 假
- 禁用部分帮助文件
- 通过将 Model.all 用法重构为更快的代码来清理代码
我现在有一个理论,一些助手可能被重命名或删除,rails 开始搜索它们并开始搜索模型/控制器作为救援。
页面请求最多需要 5 秒并使用 2 GB 内存。
有人知道导致此问题的原因以及如何修复或调试它吗?
【问题讨论】:
-
我发现使用的大量内存是由于缺少方法/缺少辅助方法中的变量。它不是错误处理,而是充斥内存一段时间,最后崩溃。通过使应用程序崩溃并等待 20 分钟让服务器恢复来发现,最终结果是带有一些 TemplateError 处理程序的堆栈跟踪,更正了错误并且页面再次变得流畅。
-
我不会说这是 Rails 助手的普遍问题。在不知道我们在谈论什么助手的情况下,很难说问题出在哪里。我最好的猜测是递归和对象保留在内存中,因为它们仍然被引用。还要检查你的 gem 的助手。
-
助手不在控制器或模型中搜索。
-
这是一个相关问题,它链接到 Rails 开放错误:stackoverflow.com/questions/9200713/…
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2