スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【Rails】unicornを運用していてメモリで困った(Cannot allocate memory)話と対応方法

unicornでRailsアプリケーションを個人で運用していて、メモリ関連で困ったのでメモしておきます。

状況


[現象]

こんなエラーを吐いてunicornのプロセスが落ちてた

[経緯]
(サーバー代をケチって)EC2のインスタンス一つに2つのRailsアプリケーションを運用していた
それぞれのアプリケーションのunicorn_workerのプロセス数は2つ
アプリケーションの規模的には一方はそれなりのデータ量でそれなりにメモリを食いそう(よくメモリのエラーを吐いてunicornのプロセスが死ぬのはこっち)
もう一方は本当に簡単なサンプルアプリケーションに近いような内容なので割りとメモリは食わなそうな印象(こっちはメモリのエラー吐かない)

[補足]
以前unicorn_workerのプロセス数を3にしてたんだけど、それが原因かと思って2にしたけどまだ起きている

調査


メモリの状況をtopコマンドとかで見てみるとリクエストすればするほど、メモリを食っている状況っぽい
で、さらに調べていくとこんなQiitaの記事を見つけなるほどと原因に気づくことができました
UnicornのWorkerプロセスをリサイクルする

対応


上記の記事にもある通りkzk/unicorn-worker-killerというgemがあるらしく、Railsアプリケーションに導入してみました。超簡単に導入できます。

gemをインストール


config.ruに設定を追記

「require ::File.expand_path('../config/environment', __FILE__)」オフィシャルにこの記述の上に書いて下さいとあるので念のため。

これでunicornを再起動すれば導入完了です。
挙動を確認するため試しにUnicorn::WorkerKiller::MaxRequestsの値を10,20に設定してログを見ていると


こんな感じでリクエスト数が10〜20の間でうまいことunicornのプロセスを再起動してくれているみたいです。

素晴らしいgemですので、使ってみてください。
kzk/unicorn-worker-killer

参考


kzk/unicorn-worker-killer
UnicornのWorkerプロセスをリサイクルする
Unicorn-worker-killerが便利だった件
スポンサーサイト

Tag:Rails  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。