【发布时间】:2015-01-22 00:44:49
【问题描述】:
我最近将 Ruby 从 2.0 升级到 2.1.5 到我的 Heroku Web 应用程序,我现在一直遇到内存配额错误,而在 2.0 和 1.9 中从未发生过这种情况。普通 Heroku Dyno 的限制为 512MB,我正在使用 Unicorn 运行 2 个进程,以及跨两个 dyno 使用 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 降级到 Ruby 2.1.5,内存问题得到了解决,并且仍然在限制之下。
后来,我尝试升级到 Ruby 2.1.5,但将环境变量 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR 设置为 0.9。如您所见,内存使用情况比原来的 2.1.5 图略好,但仍然超出了内存配额。
【问题讨论】:
-
非常有趣。我原以为this 是相关的,但很想知道这里的答案是什么。
-
也一直在关注 2.2 版本,但我担心他们主要关注性能改进而不是内存消耗改进,所以我怀疑它不会有太大帮助。
-
一些早期测试人员报告由于 2.0.0-preview1 中更新的 GC 导致内存占用减少。您可能想检查一下。
-
@Lenart,你的意思是 2.2.0-preview1 吗?
-
@MatthewO'Riordan 这是正确的。 2.2 当然。我的错!
标签: ruby-on-rails ruby memory heroku ruby-2.1