Używam nginx jako odwrotnego proxy. Ilekroć aktualizuję konfigurację dla niego za pomocą
sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"
Mam do czynienia z krótkim przestojem. Jak mogę tego uniknąć?
sites-enabled
, a nie kopiowanie go. Nie ma związku z konkretnym problemem, ale możesz przyjrzeć się temu.kill HUP
jest sposobem na płynne przeładowanie w Nginx.Odpowiedzi:
Uruchom
service nginx reload
lub/etc/init.d/nginx reload
Wykona gorący przeładowanie konfiguracji bez przestojów. Jeśli masz oczekujące żądania, będą istnieć długotrwałe procesy nginx, które będą obsługiwać te połączenia przed ich śmiercią, więc jest to niezwykle wdzięczny sposób na ponowne załadowanie konfiguracji.
Czasami możesz chcieć nadrobić zaległości
sudo
źródło
SIGHUP
do głównego procesu nginx. Nie powinno być różnicy. nginx.org/en/docs/control.htmlcat $PIDFILE
|| echo -n „nie można przeładować”service nginx reload
inginx -s reload
? Jeśli uruchomię ten pierwszy, otrzymam ten wynik:,Reloading nginx configuration: nginx.
ale moje zmiany nie zostaną zaktualizowane. Jeśli uruchomię to drugie, nie otrzymam danych wyjściowych, ale moje zmiany zostaną odzwierciedlone.log_not_found
dyrektywy, ale stwierdziłem, że musiałem zrestartować komputer, aby go uruchomić. Myślę, że przeładowanie nie działa dla wszystkich dyrektyw?Biegać
/usr/sbin/nginx -s reload
Zobacz http://wiki.nginx.org/CommandLine, aby uzyskać więcej opcji wiersza poleceń.
źródło
Nie, jesteś niepoprawny, nie powinieneś spotykać się z żadnymi przestojami dzięki opisanej procedurze. (Nginx może nie tylko przeładowywać konfigurację w locie bez żadnych przestojów, ale nawet aktualizować plik wykonywalny w locie, wciąż bez żadnych przestojów).
Zgodnie z http://nginx.org/docs/control.html#reconfiguration , wysłanie
HUP
sygnału do nginx upewnia się, że wykonuje płynne ponowne uruchomienie, a jeśli pliki konfiguracyjne są niepoprawne, cała procedura jest przerywana, a ty ' pozostało z nginx jak przed wysłaniemHUP
sygnału. W żadnym momencie nie powinno być żadnych przestojów.źródło
Zwykle ponowne ładowanie pliku konfiguracyjnego usługi nie powinno wpływać na działającą usługę. Zależy to jednak od sposobu
SIGHUP
przetwarzania sygnału.Jeśli określona usługa ma przestój podczas ponownego ładowania, można to obejść, uruchamiając tę samą usługę na wielu serwerach, najlepiej za pomocą modułu równoważenia obciążenia. W takim przypadku możesz wyjąć jeden serwer na raz i ponownie go załadować / zrestartować. Następnie można go ponownie dodać po potwierdzeniu, że jest OK.
źródło