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!