nginx重新加载如何工作?为什么是零停机时间

Ada*_*s.H 5 nginx

参考nginx官方文档。Nginx的reload命令用于重新加载配置文件?在此过程中,该服务不会停机。

我了解到,它会一直等待已连接的请求,直到完成为止,然后停止接受任何新请求。这个主意很酷,但是如何处理保持活动的连接呢?因为那些长期存在的连接不会关闭,并且不断有请求出现。

ffe*_*ast 7

这是摘要:

http://nginx.org/en/docs/control.html

主进程首先检查语法有效性,然后尝试应用新配置。如果成功,它将启动新的工作进程,并将消息发送到旧的工作进程,要求它们正常关闭。

这意味着它将使较旧的进程处理未关闭的连接,同时使新进程根据更新后的配置工作。从这个角度来看,具有保持活动状态的连接与其他未关闭的连接没有什么不同。

在1.11.11之前的版本中,此类“旧”进程可能无限期地挂起(根据@Alexey,但尚未对其进行检查),从1.11.11开始,有一个配置设置来控制此 http://nginx.org/en/ docs / ngx_core_module.html#worker_shutdown_timeout

  • @duct_tape_coder 默认值为 none,这意味着永远等待。 (3认同)
  • 如果未指定,“worker_shutdown_timeout”的默认值是多少? (2认同)