【问题标题】:Helpers use a lot of memory in rails 3(.2)助手在 rails 3(.2) 中使用大量内存
【发布时间】: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


【解决方案1】:

通过将其放置在 config/initializers/anti_freeze_hack.rb 中修复:

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

感谢Amala 为我提供了正确的主题:D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    相关资源
    最近更新 更多