2012-02-10 25 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