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?

php_nub_qq
źródło

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.

B. Miller
źródło
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.

John Keates
źródło
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