如何设置worker_shutdown_timeout以实现负载均衡在重载时平滑切换连接?
- 内容介绍
- 相关推荐
本文共计840个文字,预计阅读时间需要4分钟。
当需要让Nginx在重载配置时平滑切换,可以使用以下命令:
worker_shutdown_timeout 的作用机制
当执行 reload 时,Master 进程会启动新 worker,同时向旧 worker 发送 QUIT 信号,进入优雅关闭流程。此时旧 worker 不再接受新连接,但会继续处理已建立的活跃连接(包括后端 upstream 的长连接、客户端未完成的请求等)。worker_shutdown_timeout 就是这个“继续服务”的最长时限。超时后,即使连接尚未自然结束,worker 也会强制退出。
若该值缺失或设为 0(默认无值),旧 worker 可能无限期等待,导致:
- worker 进程数虚高,资源占用持续上升
- 部分连接被异常中止(如 TCP RST),影响用户体验
- 负载均衡节点看似在线,实则无法及时释放连接,干扰上游健康检查与故障转移
推荐配置值与依据
不是越长越好,也不是越短越安全,需结合业务连接特征设定:
-
普通 HTTP/1.1(短连接为主):设为
5s~15s即可。绝大多数请求已在几秒内完成,留出缓冲应对偶发延迟 -
启用了 Keep-Alive 或大量长轮询:建议
30s~60s。
本文共计840个文字,预计阅读时间需要4分钟。
当需要让Nginx在重载配置时平滑切换,可以使用以下命令:
worker_shutdown_timeout 的作用机制
当执行 reload 时,Master 进程会启动新 worker,同时向旧 worker 发送 QUIT 信号,进入优雅关闭流程。此时旧 worker 不再接受新连接,但会继续处理已建立的活跃连接(包括后端 upstream 的长连接、客户端未完成的请求等)。worker_shutdown_timeout 就是这个“继续服务”的最长时限。超时后,即使连接尚未自然结束,worker 也会强制退出。
若该值缺失或设为 0(默认无值),旧 worker 可能无限期等待,导致:
- worker 进程数虚高,资源占用持续上升
- 部分连接被异常中止(如 TCP RST),影响用户体验
- 负载均衡节点看似在线,实则无法及时释放连接,干扰上游健康检查与故障转移
推荐配置值与依据
不是越长越好,也不是越短越安全,需结合业务连接特征设定:
-
普通 HTTP/1.1(短连接为主):设为
5s~15s即可。绝大多数请求已在几秒内完成,留出缓冲应对偶发延迟 -
启用了 Keep-Alive 或大量长轮询:建议
30s~60s。

