私はRails 2.3.2アプリをApacheとPassengerで実行していますが、最近、最も奇妙なことが起こり始めました。
時々、アプリはリクエストの処理を完全に停止し、タイムアウトするまですべてバックアップします。 Apacheを再起動することが唯一の方法のようです。これが発生するまで、システムは比較的軽い負荷にさらされ、その時点ではまったく負荷がかかりません。
これはそれほど多くないことだと思いますが、どうすればこれを引き起こしているのかを理解できますか?注目すべきは、グローバルキューイングがオンになっていることです。 RubyはRuby-enterprise-1.8.6-20080610です;そしてPassengerは前述のRuby EnterpriseEditionに付属しているバージョンです。
私が有用だと思ったリソースの1つは、 乗客ユーザーガイドのセクション これについて話しているところです。
アプリケーションインスタンスの1つがフリーズしている(応答を停止している)場合は、SIGABRTで強制終了することで、フリーズしている場所を特定できます。これにより、アプリケーションはバックトレースを使用して例外を発生させます。
私は同じことをしました、私は1回のクラッシュなしで1年間Apache + fastcgiを使用していくつかのRails 1.2.3アプリをホストしていました、そして私はApache +乗客とランダムにクラッシュします。Apacheは応答を停止します。
私はこれまでmonitを使用して保存してきましたが、これまでの私の答えは、Apacheの代わりにnginxを使用し、最新の乗客とrubyeeを使用して新しいサーバー(仮想)に移行することでした。ここまでは順調ですね!
Apacheサーバーはまだクラッシュしていて、現在は雑種サイトにしかサービスを提供していないので、Apacheまたは特定の構成に問題があると思います。できればnginxを試してみてください:)
何が問題を引き起こしているのかわからないので、少なくともすべてをログに記録していることを確認する必要があると思います。クラッシュする前の最後のいくつかのログエントリは、原因を明らかにする可能性があります。
問題はおそらくコードの何かである可能性があります。さて、調べるために、非常に単純なRailsアプリをデプロイできるので、コードは問題になりませんが、まったく同じセットアップ(Apache +パッセンジャー+ REE)で送信できます。少しのRubyスクリプトを一晩使用するリクエスト。パーソナルコンピューターで実行して、クラッシュするかどうかを確認します。もちろん、環境をまったく同じ方法でセットアップしたことを確認する必要があります。
アプリとシステムの詳細によって異なりますが、メモリが不足している可能性もあります。 この投稿 頭に浮かぶ。投稿に記載されているようにREEのメモリ管理設定を変更して、問題が解決するかどうかを確認することをお勧めします(どのような場合でも問題はありません)。
まだ投稿していない場合は、stackoverfloにもこの質問を投稿することをお勧めします。
それはコードの何かでしょうか?入力を待っているとスレッドがブロックされ、複数のプロセスが待機するだけですか?
別の潜在的な答え:RMagickは乗客とスマートスポーンで問題を引き起こすことが知られています。
Passengerメーリングリストのこのスレッド 詳細情報:
この問題はREE20090113で修正されたようですが、発生頻度は低いと思います。今朝、Centos 464ビットで乗客2.0.6とREE20090113を実行しているフリーズしたプロセスを見つけました。