リロードプロセスnginxのの真実を探ります

この記事は本日、nginxのリロードプロセスを導入します。あなたはnginxの設定ファイルを変更したときに実際には、記事の前に、私たちはnginxの-sリロードコマンドを実行します、我々は、このコマンドを実行する理由は、新しい要求を処理している間、常にnginxのnginxの設定ファイルを配置していないサービスを停止することがあります新しい設定で更新さngi​​nx.conf古い設定nginx.confを滑らかに。

このような機能は、nginxのために必要であるが、時には私たちは長い時間のためのワーカープロセスを実行するために古い設定が終了しないので、nginxの-sリロードコマンドの実装後、労働者の子プロセスの数が時に、より多くなることを見つけますこのシナリオでは、より多くのかもしれないときに実行するために使用ストリーム4リバースプロキシ。

それではリロードnginxの分析プロセスは終わりに行うにnginxの下探検し、聞かせて?いわゆる正常な終了し、終了直後に違いは何ですか?

リロードプロセス

nginxの設定ファイルnginx.confを変更するには良い最初のステップの後、実際にあるマスター・プロセスにHUP信号を送信し、我々は、ラインのnginx -sリロードコマンドの効果は同じであるコマンド。

そして、マスター・プロセスHUPシグナルを受け取った後、私たちのコンフィギュレーション・ファイルの構文は、第2のステップはチェックするには正しいだろう、それはので、nginxの-sリロードする前に、正しい我々は必ずしもnginxの-tテスト文法の下で実行する必要はありませんと言うことですあなたは第2段階のnginxのマスターの過程で、このステップを実行します。

すべてのnginxの設定構文の後に正しく、新しいマスター・プロセス・モニタ・ポートを開きますなぜマスタプロセスで新しいリスニングポートを開く必要がありますか?私たちは、このような443のような新しいを導入することができるか、我々nginx.confで開いていないリスニングポート、およびすべてのワーカープロセスがプロセスの子マスターになるまで、子プロセスはすべてのポートの親を継承するため、Linuxのある、開かれていますオペレーティングシステムで定義され、その第三のステップは、我々は導入することができる新しいリスニングポートを開くプロセスを習得。

古い子供は何が起こるかように、次msterプロセスは、新しいワーカー子プロセスを開始するために労働者を新たにnginx.confプロファイルを使用しますか?

第5のステップで私たちが子供の後に新しいワーカーを開始します、マスタープロセスから子再び古い労働者が信号をQUIT送信し、信号はQUITとTERMは、INT信号が同じではありません、優雅に子供をシャットダウンされた信号をQUITしてください、今回nginxの必要性が滑らか確保するため、順番に注力する必要が、それは最初の子プロセス、作業員再び昔の子プロセスがシグナルを送るQUIT新しいワーカーを開始する必要があります。

そう、古いマスターは、信号が受信されQUITの後に続いて子プロセス、最初にそれらの間の時間差があるのでけれども、このときだけ新しいワーカー子プロセスへの新しい接続を言っているモニターハンドルを切ったが、時間が非常に高速ですモニターのハンドルを閉じた後、現在の接続が終了した後にプロセスを終了。

マシンを停止せずにロードされたリロード新しいコンフィギュレーション下の図を参照してください。

4つのサブプロセスの労働者は、彼らが我々がマスターにnginx.confプロファイル、送信SIGHUPを変更したときに、古い設定を使用するか、reloadコマンドを実行し、マスタープロセス上にもともと緑があり、その後、マスタは、新しい設定ファイルを使用して開始します4つの新しい黄色ワーカーの子プロセス、これは古い4緑と4つの新しい子プロセスワーカー黄色ワーカー子プロセス共存しました。通常の状況下で、古いワーカー子プロセスが閉じを扱いますので、要求後の接続は、接続がKEEPLIVE要求が正常にシャットダウンされる場合でも、優れた接続で確立されています。

リクエストといくつかの問題がある場合でも、異常な状況では、クライアントは、新しい接続が実行されたため、労働者の子プロセスは、その後、労働者の子プロセスは、長い時間のために存在することを要求中の長期滞在につながる、長い時間を処理できません子供の黄色い労働者、影響は素晴らしいことではないだろうので、唯一の労働者に影響を与えるには、緑のサブプロセスは、長い時間のために存在しますが、それは唯一の既存の接続が新しい接続には影響しません影響します。

我々はそれに対処する方法はありますか?タイムアップ後に古​​いワーカープロセスは、古い勢力を終了していない場合、マスター・プロセスは、黄色の後に新しいワーカープロセスを開始するので、どのように長い待ち時間にまである新しいバージョンの提供、新しい構成worker_shutdown_timeoutでは、ワーカープロセスが離れて終了します。

この記事では、スムーズなプロセスのnginxの新しいプロファイルをアップグレードについて説明し、我々はより良​​いまれな例外を除いシーンを扱うことができ、作業員の間でエレガントな密接な関係の後、子労働者について学び、新しい構成の子プロセス・フローを開始しました。

おすすめ

転載: www.linuxidc.com/Linux/2020-01/162066.htm