環境
概要
Ruby、特にRailsだとけっこうメモリ大食いマンになる傾向がある。(Chromeのことを笑えないぐらいには
で、いろいろググってたらjemallocを有効にしらRubyだとメモリの消費が減るらしい。ってことで試してみた。
ただしRubyの再ビルドが必要なので現行で動いているアプリケーションに対して適応するには検証が必要
手順
依存ライブラリのインストール
# ubuntu apt install libjemalloc-dev # CentOS yum install jemalloc-devel
Macの場合(未検証
brew install jemalloc
でrbenvを使ってインストール RUBY_CONFIGURE_OPTS
をつけるのがポイント
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.2
で、終わり。特に小難しい設定とかいらないので楽である。
確認
本当にjemallocが有効かどうかを確認するには以下
Rubyのバージョンが 2.5までの場合
$ irb irb(main):002:0> RbConfig::CONFIG['LIBS'] => "-lpthread -ljemalloc -lgmp -ldl -lcrypt -lm "
Rubyのバージョンが 2.6以上の場合
$ irb irb(main):002:0> RbConfig::CONFIG['MAINLIBS'] > "-lz -lpthread -lrt -lrt -ljemalloc -lgmp -ldl -lcrypt -lm"
どっちにしても、実行したときに「ljemalloc」が入っていれば有効になっている。なければ何らかビルドがおかしい
あとはすでにインストールしてある場合はbundle削除して再デプロイすればおk