Deja de Apache con gracia

24

¿Hay alguna manera de detener el servidor Apache sin terminar la ejecución de las solicitudes, básicamente una forma de decirlo: no acepte más conexiones y cierre cuando termine las actuales?

php_nub_qq
fuente

Respuestas:

12

Usar apachectl -k graceful-stopdesde aquí :

La señal WINCH o graceful-stop hace que el proceso principal aconseje a los niños que salgan después de su solicitud actual (o que salgan inmediatamente si no están sirviendo nada). El padre eliminará su PidFile y dejará de escuchar en todos los puertos. El padre continuará ejecutándose y supervisará a los niños que manejan solicitudes. Una vez que todos los niños hayan finalizado y salido o se haya alcanzado el tiempo de espera especificado por GracefulShutdownTimeout, el padre también saldrá.

B. Miller
fuente
1

Tenga en cuenta que sys-v init solía hacer una parada elegante de forma predeterminada y tenía la opción de forzar parada como una opción adicional. Una opción "especial" para detener con gracia solo es necesaria si ejecuta un administrador de procesos personalizado que normalmente mata los procesos.

John Keates
fuente
Esta respuesta podría dar la impresión de que, dado que systemdno es un administrador de procesos personalizado, no mata el proceso. Sin embargo, por defecto systemd también realiza un stopno graceful-stoppara apache.
B. Miller
44
@ B.Miller si su systemd realiza una parada en lugar de una parada elegante, es un error específico del sistema operativo que debe registrarse. Arch Linux y CentOS 7 realizan paradas elegantes.
Harald
Debian también hace una parada elegante
John Keates,
2
Interesante @JohnKeates ... tal vez esto es específico de Ubuntu 18.04. 18.04 usa el comando de detención/usr/sbin/apachectl stop
B. Miller