首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >与Ruby 2.0或1.9相比,Ruby 2.1增加了内存使用量

与Ruby 2.0或1.9相比,Ruby 2.1增加了内存使用量
EN

Stack Overflow用户
提问于 2014-11-24 18:25:51
回答 2查看 3.5K关注 0票数 16

我最近在我的Heroku web应用程序中部署了Ruby从2.0到2.1.5的升级,现在我总是遇到内存配额错误,而在2.0和1.9中,这种情况从未发生过。一个普通的Heroku Dyno有512MB的限制,我在Unicorn上运行两个进程,在两个dynos上运行一个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的消耗。由于内存是我现在最关心的问题,我想看看我是否可以用Ruby2.1.x来解决这个问题,而不是恢复到2.0。

以下是演示该问题的一些图表:

在快到下午2点的时候,我把Ruby2.0.0-p598降级到了Ruby2.1.5,内存问题得到了解决,并且仍然在限制之下。

后来,我尝试升级到 2.1.5,但将环境变量 RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR 设置为0.9。正如您所看到的,内存使用率略好于原始的2.1.5图,但仍然超过了内存配额。

EN

回答 2

Stack Overflow用户

发布于 2015-01-16 21:40:24

因此,答案显然是升级到Ruby版本2.2。

令我印象深刻的是,在升级到2.2之后,内存使用量实际上已经下降了,而升级到2.1则是内存消耗的巨大增加。请参阅下面的图表。

在最左边,2.0的内存消耗在负载下约为386mb,而2.2的内存消耗现在约为365mb。

票数 12
EN

Stack Overflow用户

发布于 2014-11-29 02:25:38

这是Ruby (2.1.x版)及其垃圾收集的一个已知问题。在阅读了几篇论坛/博客帖子后,似乎没有真正的解决方案,只能执行以下操作之一:

  • 降级到Ruby2.0并等待Ruby2.2发布
  • 使用unicorn worker killer在独角兽工作者达到一定内存后重新启动它们,防止Heroku R14错误和一些人建议调整您的GC变量(请参见here
  • here

这里有相关discussion on ruby-lang的链接。

一些人还注意到问题的一个来源可能是NewRelic的gem,所以你可能想要更新/删除它,看看它是否有帮助。

来自upcase.com论坛的一些链接和信息的信用

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27102565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档