Heim >Betrieb und Instandhaltung >Nginx >So führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch

So führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch

(*-*)浩
(*-*)浩Original
2019-11-26 14:08:293090Durchsuche

So führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch

Sie können die alte durch die neue ausführbare Nginx-Datei ersetzen, ohne den Dienst zu unterbrechen – neue Anfragen gehen nicht verloren (beim Upgrade auf eine neue Version oder beim Hinzufügen/beim Entfernen des Servers). Modul). (Empfohlenes Lernen: Nginx-Betrieb und -Wartung)

Verwenden Sie zuerst das neue ausführbare Programm, um das alte zu ersetzen (am besten erstellen Sie dann ein Backup). , senden Sie das USR2-Signal (kill -USR2 pid) an den Hauptprozess.

Der Hauptprozess benennt seine .pid-Datei in .oldbin um (zum Beispiel: /usr/local/nginx/logs/nginx.pid.oldbin) und führt dann das neue ausführbare Programm aus Sequenz Starten Sie einen neuen Hauptprozess und einen neuen Arbeitsprozess:

  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)

Zu diesem Zeitpunkt werden zwei Nginx-Instanzen gleichzeitig ausgeführt und eingehende Anfragen gemeinsam verarbeiten. Um die alte Instanz auslaufen zu lassen, müssen Sie das WINCH-Signal an den alten Master-Prozess senden, und dann werden seine Arbeitsprozesse ordnungsgemäß heruntergefahren:

  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)

Nach einiger Zeit verarbeitet der alte Arbeitsprozess alle verbundenen Prozesse Nach dem Beenden der Anforderung verarbeitet nur der neue Arbeitsprozess die eingehende Anforderung:

  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)

Da der alte Server zu diesem Zeitpunkt den Socket, auf den er lauscht, noch nicht geschlossen hat, gehen Sie wie folgt vor Sie können den alten Server dennoch mit ein paar Schritten wiederherstellen:

HUP-Signal an den alten Masterprozess senden – dieser startet seine Arbeitsprozesse, ohne die Konfigurationsdatei neu zu laden

QUIT-Signal senden an den neuen Hauptprozess, um ihn aufzufordern, seinen Arbeitsprozess ordnungsgemäß herunterzufahren

Senden Sie ein TERM-Signal an den neuen Hauptprozess, um ihn zum Beenden zu zwingen

Wenn der neue Job aus irgendeinem Grund nicht ausgeführt werden kann Beenden Sie es und senden Sie ihm das KILL-Signal

Nachdem der neue Hauptprozess beendet wurde, entfernt der alte Hauptprozess das .oldbin-Präfix und stellt es in seiner .pid-Datei wieder her, sodass alles auf das Upgrade wiederhergestellt wird Vorher.

Wenn der Upgrade-Versuch erfolgreich ist und Sie den neuen Server behalten möchten, senden Sie ein QUIT-Signal an den alten Hauptprozess, um ihn zu beenden und nur den neuen Server laufen zu lassen:

      PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    36264     1 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)

Das obige ist der detaillierte Inhalt vonSo führen Sie ein reibungsloses Upgrade von Nginx-Betrieb und -Wartung durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn