Hentikan Apache dengan anggun

24

Apakah ada cara untuk menghentikan server Apache tanpa menghentikan permintaan eksekusi, pada dasarnya cara untuk mengatakannya - jangan menerima koneksi lagi dan ditutup ketika Anda menyelesaikan yang sekarang?

php_nub_qq
sumber

Jawaban:

12

Gunakan apachectl -k graceful-stopdari sini :

WINCH atau sinyal berhenti anggun menyebabkan proses orangtua menyarankan anak-anak untuk keluar setelah permintaan mereka saat ini (atau segera keluar jika mereka tidak melayani apa-apa). Orang tua kemudian akan menghapus PidFile dan berhenti mendengarkan pada semua port. Orang tua akan terus berlari, dan memantau anak-anak yang menangani permintaan. Setelah semua anak selesai dan keluar atau batas waktu yang ditentukan oleh GracefulShutdownTimeout telah tercapai, orang tua juga akan keluar.

B. Miller
sumber
1

Perlu diingat bahwa sys-v init digunakan untuk melakukan stop anggun secara default dan memaksa-berhenti sebagai opsi tambahan. Opsi "khusus" untuk berhenti dengan anggun hanya diperlukan jika Anda menjalankan manajer proses khusus yang biasanya membunuh proses.

John Keates
sumber
Jawaban ini dapat memberi kesan bahwa karena systemdbukan manajer proses khusus, itu tidak mematikan proses. Namun, secara default systemd juga melakukan stopbukan graceful-stopuntuk apache.
B. Miller
4
@ B.Miller jika systemd Anda melakukan penghentian dan bukannya penghentian yang anggun, itu adalah bug khusus OS yang perlu dicatat. Arch Linux dan CentOS 7 keduanya melakukan berhenti anggun.
Harald
Debian juga berhenti dengan anggun
John Keates
2
@JohnKeates Menarik ... mungkin ini spesifik Ubuntu 18.04. 18.04 menggunakan perintah stop/usr/sbin/apachectl stop
B. Miller