我正在使用Rails 3.1.1並在Heroku上部署。我正在使用open-uri和Nokogiri。Rails:解決Heroku上的內存泄漏問題(也許是Nokogiri)
我想解決一個內存泄漏(?),當我試圖獲取和解析一個XML文件時發生。我提取並試圖解析的XML提要是32 Mb。
我使用下面的代碼是:
require 'open-uri'
open_uri_fetched = open(feed.fetch_url)
xml_list = Nokogiri::HTML(open_uri_fetched)
其中feed.fetch_url是外部XML文件。
看起來,雖然用Nokogiri(我的代碼中的最後一行)解析xml_list,但內存使用率高達540 Mb,並繼續增加。這似乎不合邏輯,因爲XML文件只有32 Mb。
我已經找遍了各種方式來更好地分析這些(例如ruby/ruby on rails memory leak detection),但我無法理解如何使用它們中的任何一種。 MemoryLogic似乎很簡單,但安裝說明似乎缺少一些信息...
所以,請幫我要麼確定上面的代碼是否應該使用多少內存或者如何找到內存泄漏(超級簡單)的說明。
在此先感謝!
這就是我所做的代碼代碼? Heroku提到我不應該建立一個樹形表示,但我不確定這是否是我實際做的。我加載XML文件並瀏覽每個「產品」元素。 – Christoffer
您正在構建一個樹表示形式(這就是Nokogiri :: HTML所做的),然後遍歷該表示形式。 –
這是一個很好的答案。對於這樣一個大文件,你真的沒有更好的選擇,除非你想使用一些C應用程序。 –