What is the difference between apache2 reload, restart, graceful?

Solution 1:

There main difference between the four different ways of stopping/restarting are what does the main process do about its threads, and about itself.

Note that Apache recommends using apachectl -k as the command, and for systemd, the command is replaced by httpd -k


apachectl -k stop or httpd -k stop

This tells the process to kill all of its threads and then exit


apachectl -k graceful or httpd -k graceful

Apache will advise its threads to exit when idle, and then apache reloads the configuration (it doesn't exit itself), this means statistics are not reset.


apachectl -k restart or httpd -k restart

This is similar to stop, in that the process kills off its threads, but then the process reloads the configuration file, rather than killing itself.


apachectl -k graceful-stop or httpd -k graceful-stop

This acts like -k graceful but instead of reloading the configuration, it will stop responding to new requests and only live as long as old threads are around. Combining this with a new instance of httpd can be very powerful in having concurrent apaches running while updating configuration files.


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

Recommendation: Use -k graceful unless there is something wrong with the main process itself, in which case a combination of -k stop and -k start or -k graceful-stop and -k start are the options of choice.

Solution 2:

  1. Difference between “restart” and “reload”

    • Restart= stop + start
    • Reload = remain running + re-read configuration files.
  2. Normal restart and graceful restart, you can reference article:

    https://teckadmin.wordpress.com/2013/10/23/difference-between-graceful-restart-and-normal-restart/

Solution 3:

Seems like graceful and reload are the same for apache2

In /etc/init.d/apache2:

graceful | reload | force-reload)
# rest of the script