【问题标题】:Decrease rails boot time减少导轨启动时间
【发布时间】:2013-08-29 09:05:24
【问题描述】:

我发现这个blog 是关于减少 Rails 启动时间的。

我在我的 bashrc 中设置了这些环境变量。

export RUBY_HEAP_MIN_SLOTS=800000
export RUBY_HEAP_FREE_MIN=100000
export RUBY_HEAP_SLOTS_INCREMENT=300000
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
export RUBY_GC_MALLOC_LIMIT=79000000

它确实将我的启动时间减少了一半。

现在我想知道为什么这会减少我的启动时间以及这些环境变量的含义是什么?

【问题讨论】:

    标签: ruby-on-rails performance environment-variables


    【解决方案1】:

    RUBY_HEAP_MIN_SLOTS(默认为 10_000) - 堆槽的初始数量和始终的最小槽数。一个堆槽可以容纳一个 Ruby 对象。

    RUBY_HEAP_FREE_MIN(默认 4_096)- 垃圾收集器完成运行后应该存在的空闲槽数。如果少于定义的,它会根据 RUBY_HEAP_SLOTS_INCREMENT 和 RUBY_HEAP_SLOTS_GROWTH_FACTOR 参数分配新的

    RUBY_HEAP_SLOTS_INCREMENT(默认为 10_000)- 使用所有初始插槽时要分配的新插槽数。第二个堆。

    RUBY_HEAP_SLOTS_GROWTH_FACTOR(默认为 1.8)- 用于确定要分配多少新插槽的倍增因子(RUBY_HEAP_SLOTS_INCREMENT * 倍增因子)。对于堆 #3 及以后的堆。

    RUBY_GC_MALLOC_LIMIT(默认 8_000_000)- 在触发垃圾收集器之前可以分配的 C 数据结构的数量。

    Ruby 垃圾收集器的默认设置并未针对 Rails 进行优化,Rails 使用大量内存并频繁创建和销毁大型对象。最佳值取决于应用程序本身,您可以在不同的设置下分析垃圾收集:http://www.ruby-doc.org/core-2.0/GC/Profiler.html

    您还可以使用 New Relic、gdb.rb 或使用像 scrap (https://github.com/cheald/scrap/tree/master) 这样的 gem 来监控 GC。

    这里有一些您可能感兴趣的文章:

    https://www.coffeepowered.net/2009/06/13/fine-tuning-your-garbage-collector/ http://technology.customink.com/blog/2012/03/16/simple-garbage-collection-tuning-for-rails/ http://snaprails.tumblr.com/post/241746095/rubys-gc-configuration

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-25
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多