加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby GC执行超过约250-320ms每个请求

发布时间:2020-12-17 01:20:25 所属栏目:百科 来源:网络整理
导读:我有一个 ruby在rails应用程序.我正在调查我的NewRelic门户中的Apdex下降,我看到平均来说,250-320ms的时间花在GC执行上.这是一个非常令人不安的数字.我已经在下面添加了一个屏幕截图. 我的Ruby版本是: ruby 1.9.3p194(2012-04-20修订35410)[x86_64-linux]
我有一个 ruby在rails应用程序.我正在调查我的NewRelic门户中的Apdex下降,我看到平均来说,250-320ms的时间花在GC执行上.这是一个非常令人不安的数字.我已经在下面添加了一个屏幕截图.

我的Ruby版本是:

ruby 1.9.3p194(2012-04-20修订35410)[x86_64-linux]

任何调整建议都是理想的.这个数字应该大大降低.

解决方法

您在GC中花费了大量时间,因为您经常运行GC.默认情况下,Ruby设置适用于小脚本的GC参数,而不是大型应用程序.尝试使用以下环境参数设置启动您的应用程序:
RUBY_HEAP_MIN_SLOTS=800000
RUBY_FREE_MIN=100000
RUBY_GC_MALLOC_LIMIT=79000000

这将是增加初始堆分配大小和填充GC数字,使其不经常运行.这可能会让你的应用程序使用更多的RAM,但它应该大大减少在GC上花费的时间.在默认设置下,您可能每次请求多次运行GC;您希望理想地在每个请求(或更好的情况下,在类似于Unicorn’s OOB::GC的请求之间)运行它一次.

这些是我的应用程序的GC设置,您需要上下调整,最适合您的应用程序找到正确的设置;你正在枪打中间,你不经常运行GC,并且没有过多的内存使用.这是每个应用程序的特定的,但是,没有任何样板建议,我可以给出这些确切的设置应该是什么.从默认值(10k插槽,1.8倍增长因子)增加应该会立即产生影响,您可以从那里进行调整,最适合您当前的配置.

这些参数here及更多信息here有完整的写作,而这些帖子是为REE 1.8.7编写的,它们也适用于Ruby 1.9.2.

那些是一些相当极端的数字,所以可能你在你的应用程序中做了一些事情,导致你分配比你应用更多的RAM,所以我鼓励你怀疑,梳理你的应用程序,热心分配无论如何,GC环境变量应该有助于分解这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读