サービスを中断することなく、古いものを新しい 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 サイトの他の関連記事を参照してください。