apache2 reload, restart, graceful 之间有什么区别?

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

我正在为一个项目使用 apache2,我想知道这些命令之间到底有什么区别:

service apache2 restart
service apache2 reload
service apache2 graceful
  1. “重启”和“重新加载”的区别

    • 重启=停止+开始
    • 重新加载=保持运行+重新读取配置文件。
  2. 正常重启和优雅重启,可以参考文章:

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

似乎 gracefulreload 对于 apache2

是一样的

/etc/init.d/apache2中:

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

stopping/restarting 的四种不同方式之间的主要区别在于主进程如何处理其线程和自身。

注意Apache推荐使用apachectl -k作为命令,对于systemd,命令替换为httpd -k


apachectl -k stophttpd -k stop

这告诉进程杀死它的所有线程然后退出


apachectl -k gracefulhttpd -k graceful

Apache 会建议其线程在空闲时退出,然后 apache 重新加载配置(它不会自行退出),这意味着不会重置统计信息。


apachectl -k restarthttpd -k restart

这类似于停止,进程会终止其线程,但随后进程会重新加载配置文件,而不是终止自身。


apachectl -k graceful-stophttpd -k graceful-stop

这与 -k graceful 类似,但它不会重新加载配置,而是会停止响应新请求,并且仅在旧线程存在时才会存在。将此与 httpd 的新实例结合使用可以非常强大地在更新配置文件时同时使用 apaches 运行。


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

建议:使用-k graceful除非主进程本身有问题,在这种情况下-k stop-k start-k graceful-stop和[=的组合24=]是选择的选项。