Puma/Unicornのメモリ大量消費を回避する [Ruby + jemalloc]
RailsアプリのアプリケーションサーバーにPuma/Unicornを使用すると時間経過とともに大量のメモリを消費します。
原因はPuma/Unicornではなく「Rubyのメモリ管理の仕様」のようです。
今回はPuma/UnicornのWorkerプロセスをKillするのではなく、Ruby本体を再コンパイル際にメモリを管理をする「jemalloc」を導入します。
導入メリット
自動でメモリを解放。ワーカープロセスをKillする必要はありません。
Rubyの再コンパイル
// CentOS sudo yum install jemalloc-devel // Ubuntu sudo apt install libjemalloc-dev // インストール RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install 2.6.4 // リフレッシュ rbenv rehash // 設定 rbenv global 2.6.4
あとは、プーマ、ユニコーンを再起動させるだけです。
メモリに関して
環境によってはプロセスをKillした方が若干、良い場合があります。その場合は「Kill + jemalloc」にすると良いです。
ただ、Killする場合は、わずか1秒足らずのWorker再起動時に、アクセスが集中すると許容範囲を超えてページが表示されなくなる可能性があります。
スポンサーリンク
関連記事
公開日:2019年10月03日 最終更新日:2019年11月30日
記事NO:02783
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte