2013-08-26 112 views
4

我發現這個blog減少導軌啓動時間。減少導軌啓動時間

我在我的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 

它確實減少了一半的啓動時間。

現在我想知道爲什麼這減少了我的啓動時間,這些環境變量是什麼意思?

回答

3

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,或者使用類似廢料(https://github.com/cheald/scrap/tree/master)寶石監控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