3

私は約30のRubyOnRailsアプリケーションを備えたサーバーを持っています。

30個のアプリのうち1個を(再)起動すると、他のすべてのアプリにアクセスできなくなり、1個のアプリが(再)起動するのを待っているように見えます。

コマンド:passenger-statusでさえ、1つのアプリが(再)起動されるまで待機しているようです。

これは正常な動作ですか?または、これをどのように修正できますか?

(仮想)サーバーの仕様:

  • CPU:3コアx 2.2ghz
  • メモリ:4GB
  • ハードディスク:40GB

サーバーソフトウェア:

  • CentOSリリース6.3(最終版)
  • Nginxバージョン:nginx / 1.0.12
  • Ruby 1.9.3p125(2012-02-16リビジョン34643)[x86_64-linux]
  • PhusionPassengerバージョン3.0.18

Nginx / Passenger config:

passenger_max_pool_size 50;
passenger_min_instances 1;
passenger_max_instances_per_app 2;

必要に応じて、詳細についてサポートさせていただきます。

更新** インストールされたpassengerEnterpriseとnginxにより、アプリの起動時に煩わしさがなくなりました。したがって、passenger_rolling_restartsをオンにすると問題が修正されたと思います。

4

2 に答える 2

2

うーん...これはPassengerのオープンソースバージョンの「機能」のようです。http://phusionpassenger.com/enterpriseから:

オープンソースバージョンのPhusionPassengerでは、アプリケーションを再起動するには、すべてのアプリケーションプロセスをシャットダウンし、新しいプロセスを生成する必要があります。新しいプロセスの開始には時間がかかる場合があるため(アプリケーションによって異なります)、再起動の進行中に訪問者の応答が遅くなる場合があります。ローリングリスタートを使用すると、PhusionPassengerEnterpriseはアプリケーションプロセスをバックグラウンドで再起動します。

したがって、オプションは次のようになります。

1)Passengerのエンタープライズエディションにアップグレードする

2)他のサーバーに切り替えます。

うん。

于 2013-01-22T20:08:06.367 に答える
0

実際、ここでは2つの問題が発生しています。

  1. ローリングリスタートが使用されていない場合、訪問者はリスタートが終了するまで待つ必要があります。ドロスボロが言うように。
  2. さらに、Phusion Passenger 3は、アプリケーションの最初のプロセスを生成するときに、アプリケーションプール全体をロックします。この間、リクエストは処理できません。後続のプロセススポーンはバックグラウンドで実行され、ローリングリスタートスポーンもバックグラウンドで実行されるため、リクエストには影響しません。このロックの制限は、Phusion Passenger 4(そしてもちろんPhusion Passenger Enterprise 4)で完全に解除されました。すべてが非同期になりました。
于 2013-02-27T11:32:17.277 に答える