2016-04-26 93 views
1

我的應用程序調用一堆的API,它返回大量的數據,這些數據在我的控制器中被操縱以提供各種洞察(傳遞到我的視圖)。內存泄漏在我的Ruby on Rails應用程序

問題是,我一直有我的應用程序中的內存泄漏,我目前需要重新啓動我的應用程序後,少數幾個請求。

此外,我一直緩存所有的API調用,以提高我的應用程序的性能。我的大部分數據以api的形式存儲在哈希表中,並且這些數據被操縱(使用groupby重複排序)。

我使用Ruby 1.9和Rails 3.2。我需要知道如何從應用程序中刪除此內存泄漏。

+0

你確定你有內存泄漏嗎?或者你的緩存可能會吃掉內存(因爲這是緩存)?你也許想發佈你的代碼 - 沒有代碼,我們可以做的只是猜測... – spickermann

+0

我已經看到了緩存文件夾的大小,它似乎不太大,大約20MB。我會發布代碼,但它太複雜了依賴於其他模塊。我正在尋找我們程序員在RoR中導致內存泄漏的常見缺陷。 – amair

+0

附註:兩者都是 - [Ruby 1.9](https://www.ruby-lang.org/zh/news/2014/01/10/ruby-1-9-3-will-end-on-2015 /)和[Rails 3.2](http://weblog.rubyonrails.org/2015/1/6/Rails-4-1-9-and-4-0-13-have-been-released/) - 已過時。此版本不會有任何錯誤修復和安全更新。你可以考慮升級到更新的版本。 – spickermann

回答

3

你應該確認,你確實有內存泄漏,而不是一個內存膨脹。 你可以閱讀關於紅寶石GC here

GC.stat[:heap_live_slot] - 這一個代表了上次GC後不清除的對象。如果這個數字通過請求穩步增加請求,那麼你可以肯定,你有內存泄漏。

+0

這是一個很好的開始。我敢肯定,我有一個內存泄漏,而不是一個膨脹,因爲經過一定數量的請求我的應用程序崩潰。控制器中是否有太多處理會影響它,我是否應該將更多邏輯轉移到模塊中? – amair