我最近将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