Zatrzymaj Apache z wdziękiem


23

Czy istnieje sposób na zatrzymanie serwera Apache bez przerywania wykonywania żądań, w zasadzie sposób na powiedzenie - nie akceptuj więcej połączeń i zamykaj się po zakończeniu obecnych?

Odpowiedzi:



12

Skorzystaj apachectl -k graceful-stopz tutaj :

Sygnał WYSZUKAJ lub płynnego zatrzymania powoduje, że proces nadrzędny doradza dzieciom, aby zakończyły pracę po ich bieżącym żądaniu (lub natychmiast zakończyły działanie, jeśli nic nie obsługują). Następnie rodzic usunie swój plik PidFile i przestanie nasłuchiwać na wszystkich portach. Rodzic będzie nadal działał i monitorował dzieci, które przetwarzają żądania. Po zakończeniu wszystkich dzieci i zakończeniu lub przekroczeniu limitu czasu określonego przez GracefulShutdownTimeout, rodzic również wyjdzie.


1

Należy pamiętać, że sys-v init domyślnie wykonywał płynne zatrzymanie i miał opcję zatrzymania siły jako dodatkową opcję. „Specjalna” opcja łagodnego zatrzymania jest potrzebna tylko wtedy, gdy uruchomisz niestandardowego menedżera procesów, który normalnie zabija procesy.


Ta odpowiedź może sprawiać wrażenie, że ponieważ systemdnie jest niestandardowym menedżerem procesów, nie zabija procesu. Jednak domyślnie Systemd również wykonuje stopnie graceful-stopdla apache.
B. Miller

4
@ B.Miller, jeśli systemd wykonuje zatrzymanie zamiast płynnego zatrzymania, jest to błąd specyficzny dla systemu operacyjnego, który należy zarejestrować. Arch Linux i CentOS 7 wykonują płynne zatrzymania.
Harald

Debian również zatrzymuje się z gracją
John Keates

2
Interesujące @JohnKeates ... może to specyficzne dla Ubuntu 18.04. 18.04 używa polecenia stop/usr/sbin/apachectl stop
B. Miller
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.