動かざることバグの如し

近づきたいよ 君の理想に

jemallocを有効化したRubyをインストールしてRailsで使う

環境

概要

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

参考リンク