我最近將Ruby從2.0升級到2.1.5到我的Heroku Web應用程序,並且我現在一直在處理內存配額錯誤,而對於2.0和1.9,這絕不會發生了。正常的Heroku Dyno有512MB的限制,並且我正在使用Unicorn運行2個進程,以及兩個dynos使用Sidekiq運行一個線程。內存使用量隨着Ruby 2.1與Ruby 2.0或1.9的增加而增加
在閱讀Phusion Passenger memory consumption increase from 1.9.3 (system) to 2.1.2 (RVM) on Ubuntu後,我試着將環境變量RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
設置爲0.9來禁用世代垃圾回收器,並且它確實提高了內存消耗,但仍然讓我無法接近2.0或1.9的消耗。現在內存是我最關心的問題,我想看看我是否可以用ruby 2.1.x解決這個問題,而不是回覆到2.0。
這裏有一些圖表展示問題:
在之前下午,我降級到Ruby 2.0.0-p598到Ruby 2.1.5和存儲問題得到解決,仍然超出了限制。
後來的後來,我嘗試升級到2.1.5紅寶石,但設置環境變量RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
0.9。正如你所看到的,內存使用率比原來的2.1.5圖稍好,但仍然違反了內存配額。
很有意思。我原以爲[this](https://www.omniref.com/blog/blog/2014/11/18/ko1-at-rubyconf-2014-massive-garbage-collection-speedup-in-ruby-2-點-2 /)是相關的,但很好奇,看看答案在這裏。 – Anthony 2014-11-24 12:46:35
也一直遵循2.2版本,但我擔心他們的重點主要集中在性能改進上,而不是內存消耗方面的改進,所以我懷疑它沒有多大幫助。 – 2014-11-24 15:57:15
由於2.0.0-preview1中的更新GC,一些早期測試人員報告了更低的內存佔用量。你可能想看看它。 – Lenart 2014-12-01 13:09:53