4

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

そして、それは私の起動時間を半分に短縮しました.

これにより起動時間が短縮された理由と、これらの環境変数の意味を知りたいのですが。

4

1 に答える 1

3

RUBY_HEAP_MIN_SLOTS (デフォルトは 10_000) - 常にヒープ スロットの初期数とスロットの最小数。1 つのヒープ スロットは、1 つの Ruby オブジェクトを保持できます。

RUBY_HEAP_FREE_MIN (デフォルトは 4_096) - ガベージ コレクターの実行が終了した後に存在する空きスロットの数。定義された数より少ない場合は、RUBY_HEAP_SLOTS_INCREMENT および RUBY_HEAP_SLOTS_GROWTH_FACTOR パラメータに従って新しいものを割り当てます。

RUBY_HEAP_SLOTS_INCREMENT (デフォルトは 10_000) - すべての初期スロットが使用されたときに割り当てる新しいスロットの数。2 番目のヒープ。

RUBY_HEAP_SLOTS_GROWTH_FACTOR (デフォルト 1.8) - 割り当てる新しいスロットの数を決定するために使用される乗算係数 (RUBY_HEAP_SLOTS_INCREMENT * 乗算係数)。ヒープ #3 以降の場合。

RUBY_GC_MALLOC_LIMIT (デフォルト 8_000_000) - ガベージ コレクターをトリガーする前に割り当てることができる C データ構造の数。

Ruby ガベージ コレクターのデフォルト設定は、多くのメモリを使用し、巨大なオブジェクトを頻繁に作成および破棄する Rails 用に最適化されていません。最適な値はアプリケーション自体に依存し、さまざまな設定でガベージ コレクションをプロファイルできます: http://www.ruby-doc.org/core-2.0/GC/Profiler.html

New Relic、gdb.rb、またはスクラップなどの gem ( 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-レールのチューニング/ http://snaprails.tumblr.com/post/241746095/rubys-gc-configuration

于 2013-08-28T22:52:11.630 に答える