Wpływ wdzięcznego ponownego uruchomienia Apache i wrażeń użytkownika

10

Czy bezpieczne jest gracefulponowne uruchomienie Apache na serwerze produkcyjnym? Jakie skutki wywoła pełen wdzięku restart i jaki będzie wpływ (jeśli w ogóle)? Czy wystąpią jakieś szkodliwe skutki (np. Przestoje, nawet jeśli są krótkotrwałe)?

Rozważyłem następujące zasoby, ale nadal nie jest jasne, jaki będzie wpływ na użytkowników:

gwiaździsta
źródło

Odpowiedzi:

9

Podczas wykonywania płynnego restartu istniejące połączenia powinny działać do normalnego zakończenia, w którym to momencie ich pracownicy zakończą się. Nowi pracownicy powinni już zostać uruchomieni do obsługi nowych połączeń.

Nie powinieneś zauważać żadnych awarii połączenia lub powolnego ładowania strony, ale w praktyce możesz zobaczyć nowe połączenia w kolejce, gdy konfiguracja jest ponownie ładowana przez wątek główny (moje zajmuje mniej niż pół sekundy)

W przypadku ponownego uruchamiania w celu pobrania nowej konfiguracji istnieje ryzyko błędu konfiguracji, który może uniemożliwić prawidłowe ponowne uruchomienie serwera.

Jeśli serwer znajduje się w nienormalnym stanie, może nie uruchomić się ponownie z gracją (być może dlatego rozważasz ponowne uruchomienie z gracją)

Zdradliwy
źródło
1

Jeśli Apache obsługuje pliki statyczne i nie działa jako front do czegoś takiego jak , jest dość płynny. Większość użytkowników nawet tego nie zauważy, a ci, którzy to zrobią, uznają to za normalne. Apache nie będzie obsługiwał nowych żądań, dopóki stare nie zostaną obsłużone, więc będziesz czekać, aż wszystkie skończą. Jeśli ktoś pobiera plik 500 MB z szybkością 68 KB / s, być może czeka Cię DŁUGI CZAS, podczas którego nie odbywa się żadna inna porcja.

Jeśli Apache stoi na czele serwera aplikacji, sytuacja może być zupełnie inna. Z doświadczenia wynika, że ​​interfejs użytkownika do interakcji z tym serwerem będzie bardzo zły, dopóki serwer aplikacji nie zostanie uruchomiony, załadowany i pamięci podręczne nie zostaną rozgrzane.

sysadmin1138
źródło
5
Ponadto BARDZO ważne jest, aby zrobić to /etc/init.d/httpd configtestprzed ponownym uruchomieniem dowolnego serwera Apache na serwerze produkcyjnym.
Citylight,
Rzeczywiście - bardzo ważne jest uruchomienie configtest. IIRC, myślę, że w późniejszych wersjach Apache może przeprowadzić niejawny test konfiguracji przed płynnym restartem, a jeśli nie powiedzie się on, nie będzie kontynuował restartu.
stellarchariot
5
„Apache nie będzie obsługiwał nowych żądań, dopóki stare nie zostaną obsłużone, więc będziesz czekał, aż wszystkie się skończą. Jeśli ktoś pobiera plik 500 MB z szybkością 68 KB / s, możesz oczekiwać DŁUGIEGO CZASU, podczas którego żadne inne serwowanie się dzieje ”. To nie jest dokładne. Konfiguracja jest ponownie ładowana natychmiast i tworzone są nowe procesy potomne, akceptują połączenia i przetwarzają żądania, podczas gdy poprzednie generacje kończą swoje ostatnie żądania.
kowboj,
0

Wspomniany powyżej parametr wdzięku mówi httpd, aby rozpoczął proces restartowania, sygnalizując najpierw wszystkie swoje procesy potomne, aby zakończyły bieżące zadania. Po zakończeniu wszystkich procesów potomnych (obsługujących żądania HTTP) zadania zostaną zakończone; jeśli jakiekolwiek procesy potomne nie obsługują obecnie żądań, zostaną natychmiast zamknięte.

Natomiast zatrzymaj próby natychmiastowego zakończenia wszystkich procesów potomnych, co może spowodować zawieszenie się użytkowników końcowych. Moje preferencje są pełne wdzięku - lepszy wybór dla serwera klasy biznesowej - ponieważ jest to bardziej przyjazne niż nagłe zakończenie procesów potomnych obsługujących klientów. Wielu administratorów, a zwłaszcza programistów, używa stop, aby zatrzymać swój serwer, często dlatego, że nie wiedzą, że w gracji nawet istnieje.

Link: https://www.godaddy.com/garage/tech/config/how-to-restart-apache-without-rebooting-your-centos-linux-server/ Link

Somdip Dey
źródło