Недавно я развернул обновление Ruby от 2.0 до 2.1.5 до своего веб-приложения Heroku, и я постоянно нажимаю на ошибки квот памяти, тогда как с 2.0 и 1.9 это никогда не происходило. Для нормального Heroku Dyno существует ограничение в 512 Мбайт, и я запускаю 2 процесса с Unicorn вместе с одним потоком с Sidekiq на двух динамиках.
После чтения Увеличение потребления памяти Phusion Passenger с 1.9.3 (система) до 2.1.2 (RVM) на 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 до Ruby 2.1.5, и проблемы с памятью были решены и остались под лимитом.
Затем позже я попробовал обновление до Ruby 2.1.5, но установил переменную окружения RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR
равную 0,9. Как вы можете видеть, использование памяти немного лучше, чем исходный график 2.1.5, но все еще нарушает квоту памяти.