ApacheHTTPサーバーの停止と再起動
グレースフルリスタート
シグナル:USR1 apachectl -k graceful
USR1
またはgraceful
シグナルにより、親プロセスは、現在のリクエストの後に終了するように(または、子供がいる場合はすぐに終了するように)子供にアドバイスします。 「何も提供していません。」親は構成ファイルを再度読み取り、ログファイルを再度開きます。各子が終了すると、親はそれを新世代の構成の子に置き換え、新しい要求の処理をすぐに開始します。
このコードは、MPMのプロセス制御ディレクティブを常に尊重するように設計されているため、クライアントにサービスを提供するために使用できるプロセスとスレッドの数は、再起動プロセス全体を通じて適切な値に維持されます。さらに、StartServers
次の方法:1秒後に少なくともStartServers
新しい子が作成されていない場合は、たるみを拾うのに十分な数を作成します。したがって、コードはサーバーの現在の負荷に適した子の数を維持し、StartServers
パラメーターを使用して希望を尊重しようとします。
<のユーザーdiv id = "b0805b5965">
は、USR1
が送信されたときに、サーバー統計がゼロに設定されていないことに気付きます。このコードは、サーバーが新しい要求を処理できない時間を最小限に抑える(オペレーティングシステムによってキューに入れられるため、どのような場合でも失われない)ことと、チューニングパラメーターを尊重することの両方を目的として作成されました。これを行うには、世代を超えてすべての子を追跡するために使用されるスコアボードを維持する必要があります。
ステータスモジュールは、G
を使用して次の子を示します。正常な再起動が行われる前に、引き続きリクエストの処理が開始されました。
現在、USR1
を使用するログローテーションスクリプトで、すべての子が書き込みを行っていることを確実に知る方法はありません。再起動前のログが終了しました。USR1
信号を送信した後、古いログで何かを行う前に、適切な遅延を使用することをお勧めします。たとえば、ヒットのほとんどが少ない場合などです。低帯域幅リンクのユーザーが完了するまでに10分以上かかる場合は、15分待ってから古いログで何かを行うことができます。
再起動を発行すると、最初に構文チェックが実行され、構成ファイルにエラーがないことを確認します。構成ファイルにエラーがある場合、その構文エラーに関するエラーメッセージが表示され、サーバーは再起動を拒否します。これにより、サーバーが停止して再起動できなくなり、サーバーが機能しなくなる状況が回避されます。
これでも、サーバーが正しく再起動することは保証されません。構成ファイルのセマンティクスと構文を確認するには、root以外のユーザーとしてhttpd
を起動してみてください。エラーがない場合は、ソケットとログを開こうとしますが、ルートではないため(または、現在実行中のhttpd
にすでにこれらのポートがバインドされているため)、失敗します。失敗した場合その他の理由で、それはおそらく設定ファイルエラーであり、グレースフルリスタートを発行する前にエラーを修正する必要があります。