我在heroku上部署了一個rails應用程序。我們有一個工作人員(工作:工作),它連續創建了七個管理對象(每個任務一個),並以無限循環的方式在其上運行方法。這是主要的代碼如下所示(它的重要組成部分反正):heroku工作者任務內存配額超過
loop do
begin
Manager.subclasses.each do |manager_klass|
manager_klass.new.process
end
#exception handling here
end
sleep(1)
end
的任務沒有做這樣的事情Model.all或此類。我讀過很多關於ruby中泄漏和膨脹的文章,並且避免了大多數。
我的工人的Heroku日誌包括: R14 - 超過內存配額;
工作人員運行大約3小時後(這是內存泄漏/內存堆積的實質證明),這開始顯示。
我試過memprof(不適用於ruby 1.9),bleak_house(鞋無關信息)和其他使用linux命令記錄內存快照(這不會與heroku一起使用)的寶石。
我已經查看了關於此的所有答案,沒有幫助。
關於我的七個經理在單一工作中工作的具體案例的任何想法?
謝謝Jon。 你提到的這兩篇文章都不會幫助我,因爲它們告訴我們RAM的整體用法。泄漏位於工作人員的task_managers中的某處。 我最近的發現是,即使在無限循環中運行的任務中,內存也會累積,次工作者越少,累積速度越慢,但仍然存在。 我需要使用'sub-workers'(酷名),因爲我有8個任務正在運行,其中4個需要在每2到5秒後運行,並且我無法承受連續運行的4個獨立工作人員。 我使用紅寶石1.9,應該沒問題。 – saGii