Ich benutze Nginx als Reverse-Proxy. Immer wenn ich die Konfiguration dafür aktualisiere
sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"
Ich habe eine kurze Ausfallzeit. Wie kann ich das vermeiden?
sites-enabled
, nicht zu kopieren. Nicht auf Ihr spezielles Problem bezogen, aber Sie möchten sich vielleicht darum kümmern.kill HUP
ist die Möglichkeit, ein elegantes Neuladen in Nginx durchzuführen.Antworten:
Führen Sie
service nginx reload
oder aus/etc/init.d/nginx reload
Die Konfiguration wird ohne Ausfallzeit im laufenden Betrieb neu geladen. Wenn Sie ausstehende Anforderungen haben, gibt es verweilende Nginx-Prozesse, die diese Verbindungen behandeln, bevor sie abstürzen. Dies ist eine äußerst elegante Methode, um Konfigurationen neu zu laden.
Manchmal möchten Sie vielleicht mit voranstellen
sudo
quelle
SIGHUP
An den Nginx-Master-Prozess senden . Es sollte keinen Unterschied geben. nginx.org/en/docs/control.htmlcat $PIDFILE
|| gefunden echo -n "kann nicht nachladen"service nginx reload
und istnginx -s reload
? Wenn ich das erstere ausführe, erhalte ich die folgende Ausgabe:,Reloading nginx configuration: nginx.
aber meine Änderungen werden nicht aktualisiert. Wenn ich Letzteres ausführe, erhalte ich keine Ausgabe, aber meine Änderungen werden wiedergegeben.log_not_found
Direktive hinzugefügt hatte, aber festgestellt, dass ich einen Neustart durchführen musste, damit es funktioniert. Ich denke, das Nachladen funktioniert nicht bei allen Anweisungen?Lauf
/usr/sbin/nginx -s reload
Weitere Befehlszeilenoptionen finden Sie unter http://wiki.nginx.org/CommandLine .
quelle
Nein, Sie sind falsch. Es ist nicht vorgesehen, dass Sie mit dem von Ihnen beschriebenen Verfahren Ausfallzeiten haben. (Nginx kann nicht nur die Konfiguration im laufenden Betrieb ohne Ausfallzeiten neu laden, sondern auch die ausführbare Datei im laufenden Betrieb aktualisieren, immer noch ohne Ausfallzeiten.)
Wenn Sie das Signal gemäß http://nginx.org/docs/control.html#reconfiguration
HUP
an nginx senden, wird sichergestellt, dass ein ordnungsgemäßer Neustart durchgeführt wird. Wenn die Konfigurationsdateien nicht korrekt sind, wird der gesamte Vorgang abgebrochen. Der Nginx verbleibt wie vor dem Senden desHUP
Signals. Zu keinem Zeitpunkt sollten Ausfallzeiten möglich sein.quelle
In der Regel sollte das erneute Laden der Konfigurationsdatei eines Dienstes keine Auswirkungen auf den ausgeführten Dienst haben. Dies hängt jedoch davon ab, wie das
SIGHUP
Signal verarbeitet wird.Wenn ein bestimmter Dienst während des erneuten Ladens ausfällt, kann dies umgangen werden, indem derselbe Dienst auf mehreren Servern ausgeführt wird, vorzugsweise mithilfe eines Lastenausgleichs. In diesem Fall können Sie jeweils einen Server herausnehmen und neu laden / neu starten. Anschließend kann es erneut hinzugefügt werden, nachdem bestätigt wurde, dass es in Ordnung ist.
quelle