0

同じファイル システムを共有する 3 つの Apache Passenger サーバーを実行しており、それぞれが 11 の Rails アプリケーションを実行しています。

設定しました

  1. PassengerPoolIdleTime = 0 は、どのアプリケーションも完全に停止しないようにします。

  2. PassengerMaxPoolSize = 20 にして、すべてのアプリケーションを実行するのに十分なプロセスがあることを確認します。

問題は、サーバーの1つでpassenger-memory-statsを実行すると、210台のVMが表示されることです!

そして、passenger-status を実行すると、(予想どおり) 20 個のアプリケーション インスタンスが表示されます。

何が起こっているか知っている人はいますか?これらの 210 のインスタンスのうち、まだ使用されているインスタンスを特定するにはどうすればよいですか? また、それらを定期的に削除するにはどうすればよいでしょうか? PassengerMaxInstancesPerApp は、孤立しているように見えるインスタンスを減らすために何かをしますか?

4

4 に答える 4

2

実際には非常に多くの Apache ワーカー プロセスが実行されており、そのうち 24 の Passenger プロセスのみが実行されていることがわかりました (私より少し経験豊富な人に尋ねたところ)。実際には、私が思っていたよりも多くの Web サイトと共有ホスティング アカウントをホストしています。しかし、すべての返信をありがとう!

于 2009-10-07T20:48:04.080 に答える
1

次のコマンドを実行すると、Railsプロセスの数に関する明確な回答を得ることができます。

ps auxw | grep Rails | wc -l

ただし、実際には100を超えるプロセスが実行されているとは思えません。各プロセスが約50 mbで、合計で5 GBを超えるRAMやスワップを消費し、システムのクロールが遅くなる可能性があります。

于 2009-10-06T20:17:34.217 に答える
0

シャットダウン中にプロセスがスタックしている可能性があります。バックトレースを取得して、何をしているかを確認してください。

于 2009-10-07T07:07:56.087 に答える
0

それほど多くの答えではありませんが、いくつかの有用な診断アドバイスです。

Rack::ProcTitleミドルウェアをスタックに追加してみてください。私たちは何年もの間、生産でそれを使用してきました。実行ps auxすると、ワーカーが何をしているか (アイドル状態、特定の要求の処理など) に関する情報が得られるはずです。

これらのプロセスが乗客によって直接生成されているとは思いません。それは、アプリの奥深くに分岐するものである可能性があります。

于 2009-10-06T18:18:40.910 に答える