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

王林
Freigeben: 2023-05-15 17:34:06
nach vorne
1380 Leute haben es durchsucht

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

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

Der Hauptprozess benennt seine .pid-Datei in .oldbin um (zum Beispiel: /usr/local/nginx/logs/nginx.pid.oldbin), führt dann das neue ausführbare Programm aus und startet nacheinander den neuen Hauptprozess und die neue Arbeit Prozess:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3313433126nobody0.01368kqreadnginx:workerprocess(nginx)

​3313533126nobody0.01380kqreadnginx:workerprocess(nginx)

​3313633126nobody0.01368kqreadnginx:workerprocess(nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(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 Masterprozess senden. Anschließend werden dessen Arbeitsprozesse ordnungsgemäß heruntergefahren:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Nach einer Weile verarbeitet der alte Arbeitsprozess alle verbundenen Anfragen und wird dann beendet, sodass nur noch der neue Arbeitsprozess die eingehenden Anfragen bearbeiten muss:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

Da der alte Server zu diesem Zeitpunkt den Socket, den er überwacht, noch nicht geschlossen hat, können Sie den alten Server dennoch wiederherstellen, indem Sie die folgenden Schritte ausführen:

Senden Sie ein HUP-Signal an den alten Masterprozess – dieser startet seinen Arbeitsprozess, ohne die Konfigurationsdatei neu zu laden

Senden Sie das QUIT-Signal an den neuen Hauptprozess und bitten Sie ihn, seinen Arbeitsprozess ruhig zu beenden

Senden Sie ein TERM-Signal an den neuen Hauptprozess, um dessen Beendigung zu erzwingen

Wenn der neue Arbeitsprozess aus irgendeinem Grund nicht beendet werden kann, senden Sie ihm ein 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. Auf diese Weise wird alles auf den Stand vor dem Upgrade zurückgesetzt.

Wenn der Upgrade-Versuch erfolgreich ist und Sie auch 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:

PIDPPIDUSER%CPUVSZWCHANCOMMAND

​362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

​3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

​3626736264nobody0.01364kqreadnginx:workerprocess(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!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage