nginxの運用保守でスムーズにアップグレードする方法

(*-*)浩
リリース: 2019-11-26 14:08:29
オリジナル
3031 人が閲覧しました

nginxの運用保守でスムーズにアップグレードする方法

サービスを中断することなく、古いものを新しい nginx 実行可能ファイルに置き換えることができます。新しいリクエストは失われません (新しいバージョンにアップグレードするとき、またはサーバーを追加するとき、またはサーバーを削除するとき)モジュール)。 (推奨される学習: nginx の運用とメンテナンス )

まず、新しい実行可能プログラムを使用して古いプログラムを置き換えます (バックアップを作成することをお勧めします)。次に、USR2 (kill -USR2 pid) シグナルをメインプロセスに送信します。

メイン プロセスは、.pid ファイルの名前を .oldbin (例: /usr/local/nginx/logs/nginx.pid.oldbin) に変更し、新しい実行可能プログラムを実行します。シーケンス 新しいメイン プロセスと新しいワーカー プロセスを開始します:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
ログイン後にコピー

この時点では、2 つの nginx インスタンスが同時に実行され、受信リクエストを一緒に処理します。古いインスタンスを段階的に廃止するには、WINCH シグナルを古いマスター プロセスに送信する必要があります。そうすれば、そのワーカー プロセスは正常にシャットダウンを開始します:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
ログイン後にコピー

しばらくすると、古いワーカー プロセスは接続されているすべてのプロセスを処理します。リクエストを終了した後、新しいワーカー プロセスだけが受信リクエストを処理します:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
ログイン後にコピー

この時点では、古いサーバーはリッスンしているソケットをまだ閉じていないため、次のようになります。いくつかの手順で古いサーバーを復元することもできます。

#HUP シグナルを古いマスター プロセスに送信します - 設定ファイルを再ロードせずにワーカー プロセスを開始します

QUIT シグナルを送信します新しいメイン プロセスに、ワーク プロセスを正常にシャットダウンするよう要求します。

新しいメイン プロセスに TERM シグナルを送信し、強制的に終了します。

何らかの理由で新しいジョブをプロセスが実行できない場合終了すると、KILL シグナルが送信されます

新しいメイン プロセスが終了すると、古いメイン プロセスは .oldbin プレフィックスを削除し、.pid ファイルに復元します。このようにして、すべてが復元されます。アップグレード前。

アップグレードの試行が成功し、新しいサーバーも維持したい場合は、古いメイン プロセスに QUIT シグナルを送信して終了し、新しいサーバーのみを実行したままにします。リーリー

以上がnginxの運用保守でスムーズにアップグレードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート