Scenario / Questions

Is there a way to stop the Apache server without terminating executing requests, basically a way to tell it – don’t accept any more connections and shut down when you finish your current ones?

Find below all possible solutions or suggestions for the above questions..

Suggestion: 1

Yes.

apachectl -k graceful-stop

https://httpd.apache.org/docs/2.4/stopping.html

Suggestion: 2

Use apachectl -k graceful-stop from here:

The WINCH or
graceful-stop signal causes the parent process to advise the children
to exit after their current request (or to exit immediately if they’re
not serving anything). The parent will then remove its PidFile and
cease listening on all ports. The parent will continue to run, and
monitor children which are handling requests. Once all children have
finalised and exited or the timeout specified by the
GracefulShutdownTimeout has been reached, the parent will also exit.

Suggestion: 3

Keep in mind that sys-v init used to do graceful stop by default and had force-stop as an extra option. A “special” option to gracefully stop is only needed if you run a custom process manager that normally kills processes.