我最近将我的Heroku Web应用程序中的Ruby版本从2.0升级到2.1.5,现在我经常遇到内存配额错误,而在使用2.0和1.9时从未发生过这种情况。普通Heroku Dyno的限制为512MB,我正在两个dynos上运行2个带有Unicorn的进程,以及一个带有Sidekiq的线程。
阅读了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。
以下是说明问题的一些图表:
在下午2点之前,我将Ruby版本从2.0.0-p598降级到2.1.5,内存问题得到了解决并保持在限制范围内。
RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
为 0.9。如图所示,内存使用情况略好于原始的 2.1.5 图表,但仍超出内存配额。