mod_perl と fastcgi を比較するときに常に挙げられる利点の 1 つは、mod_perl の場合、アプリを完全にリロードする必要があり、ダウンタイムが発生することですが、fastcgi を使用すると、ダウンタイムなしでアプリをリロードできます。ただし、これを行う方法の例は見つかりません。ダウンタイムなしで fastcgi を使用して実行されている Catalyst アプリをリロードすることは可能ですか? このガイドに従って、Catalyst アプリを起動して実行しました。ありがとう!
2 に答える
このガイドのスクリプトとこの回答にある bash スクリプトの一部を組み合わせることで、私が望むことを行うスクリプトを作成することができました。スクリプトを入れて/etc/init.d
、上部の適切な変数を変更すると、このスクリプトは非常に便利です。呼び出し:
service script reload
また
/etc/init.d/script reload
新しいコードがロードされる間、ダウンタイムが発生しません。スクリプトはここにあります。スクリプトをダウンロードし、上部の変数を変更するだけです。
chmod +x script
に移動すると/etc/init.d
、準備完了です。:)
はい。FastCGI で実行されているアプリケーション (Catalyst を使用しているかどうかに関係なく) は、FastCGI にそのアプリケーション用に定義された AppClass があり、AppClass が正のカウントexit;
で構成されている場合、単純に、FastCGI はすぐに置換プロセスを生成します。-processes
AppClass がないか-processes
0 の場合、アプリケーションの URI に対する次のリクエストが着信したときに、代替プロセスが作成されます。これにより、アプリの起動を待機している間、最初のリクエストに若干の遅延が生じる場合がありますが、リクエストは正常に処理されます。
exit
どちらの場合でも、リクエストの途中で中断されるのではなく、現在のリクエストを完了した後にアプリケーションが許可されている場合 (たとえば、 で)、入ってくるリクエストが失われたり失敗したりする瞬間があってはなりませんkill -9
。