apache2重载,重启,优雅有什么区别?

VDa*_*cau 31 apache2

我正在使用apache2进行项目,我想知道之间的区别是什么:

service apache2 restart
service apache2 reload
service apache2 graceful
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

Phi*_*han 23

  1. "重启"和"重装"之间的区别

    • Restart = stop + start
    • 重新加载=保持运行+重新读取配置文件.
  2. 正常重启和平稳重启,可以参考文章:

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

  • 你能在这里详细说明吗? (2认同)
  • @manetsus详细说明具体是什么?优雅是一个更好的重启.重启将停止所有工作线程,无论他们正在做什么,关闭,并再次启动.优雅告诉所有工作线程一旦完成就停止,并且当所有线程终止时,它将关闭主进程并再次启动.如果您的apache进程没有能够安全地拯救,那么这一点非常重要.如果您不使用事务,写入文件或发送数据包,重新启动可能会导致一半写入/完成数据.这对用户来说也很粗鲁. (2认同)
  • 超出评论空间...通过“对用户无礼”。如果用户进行了请求处理,即使可以终止请求而不会造成系统损坏,则apache重新启动将向用户返回500错误。用户不喜欢这样。 (2认同)

jef*_*ill 20

停止/重启的四种不同方式之间的主要区别在于主进程对其线程以及自身的处理方式.

请注意,Apache建议使用apachectl -kas作为命令,对于systemd,命令将替换为httpd -k


apachectl -k stop 要么 httpd -k stop

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


apachectl -k graceful 要么 httpd -k graceful

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


apachectl -k restart 要么 httpd -k restart

这类似于stop,因为该进程终止了它的线程,但随后进程重新加载配置文件,而不是自杀.


apachectl -k graceful-stop 要么 httpd -k graceful-stop

这样做-k graceful但不是重新加载配置,它将停止响应新请求,并且只有旧线程存在时才会生效.将此与新实例相结合httpd可以非常强大,可以在更新配置文件时运行并发apach.


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

建议:使用-k graceful,除非有什么问题的主要过程本身,在这种情况下的组合-k stop-k start-k graceful-stop-k start有选择的选项.

  • `service apache2 reload` 等价于 `-k graceful`。`service apache2 restart` 等价于 `-k stop` 然后再次启动服务器。至少在我的系统中;阅读发行版中的 init.d 脚本以确保。 (6认同)

aho*_*ong 5

似乎gracefulreloadapache2相同

/etc/init.d/apache2:

graceful | reload | force-reload)
# rest of the script
Run Code Online (Sandbox Code Playgroud)