先週、Rails 3.0.1で動作していた小さなプロジェクトをRails 3.2.2にアップグレードしました。Rails 3.0からRails 3.2(Ruby 1.9.3 + Passenger)へのアップグレード後の膨大なメモリリーク/膨れ
アップグレードの直後に、私たちは時々、1日2〜3回、巨大なPhusion Passengerプロセス(1〜5 GB)を捉えていることを認識しました。
Phusion Passenger 3.0.11とRuby 1.9.3-p0が動作しています。すでにRubyのバージョン(1.9.2-p290と1.9.3-p125)は成功していませんでした。
その後、我々のメモリ使用量をOinkで追跡しようとしました。残念ながら、Oinkはメモリが肥大化する理由を示していません - 大きなプロセスはもはやログファイルに書き込まれないようです。
私たちがRails 3.0.1にダウングレードしたとき、問題はなくなりました。誰にも同様の問題がありますか?あまりにも多くのActiveRecordインスタンスなど、メモリリークの可能性をコードで確認しましたが、何も見つからなかった。
Passengerの代わりにUnicornを試してみる価値はあると思いますか?それとも、同じ問題に遭遇する可能性はありますか?
メモリリークをトレースする方法についてのご意見は歓迎します。すでにnewrelicを設定していますが、メモリリークに関する詳細情報は表示されません。
PassengerをUnicornセットアップで置き換えたので、システムは期待どおりに動作します。私はそれが一般的な旅客の問題か、おそらくPassenger/rvm(そしておそらく私たちが最近どのようにそれをインストール/アップグレードしたか)に関する問題ではありません。 –
ユニコーンの設定を共有してもよろしいですか?私はまったく同じ問題を抱えており、メモリオーバーフローを防ぐために6時間ごとにサーバーを再起動する必要があります。 –
遅れて申し訳ありません。まあ...ユニコーンの設定を共有するのはおそらくあまりにも多くのコメントをここに投稿するだろう。すばらしいGoogle検索が役立ちます。 https://github.com/blog/517-unicornから始めてください。基本的には、アップストリームサーバとしてのユニコードのnginxです。ユニコーンの設定は単なるunicorn.rbで設定されています....乗客から切り替えるのにおそらく1時間かかりました。また、カイストラーノの設定にユニコーンのデプロイメントを追加する方法もあります。 –