如何设置worker_shutdown_timeout以实现负载均衡在重载时平滑切换连接?

2026-05-07 02:530阅读0评论SEO基础
  • 内容介绍
  • 相关推荐

本文共计840个文字,预计阅读时间需要4分钟。

如何设置worker_shutdown_timeout以实现负载均衡在重载时平滑切换连接?

当需要让Nginx在重载配置时平滑切换,可以使用以下命令:

worker_shutdown_timeout 的作用机制

当执行 reload 时,Master 进程会启动新 worker,同时向旧 worker 发送 QUIT 信号,进入优雅关闭流程。此时旧 worker 不再接受新连接,但会继续处理已建立的活跃连接(包括后端 upstream 的长连接、客户端未完成的请求等)。worker_shutdown_timeout 就是这个“继续服务”的最长时限。超时后,即使连接尚未自然结束,worker 也会强制退出。

若该值缺失或设为 0(默认无值),旧 worker 可能无限期等待,导致:

  • worker 进程数虚高,资源占用持续上升
  • 部分连接被异常中止(如 TCP RST),影响用户体验
  • 负载均衡节点看似在线,实则无法及时释放连接,干扰上游健康检查与故障转移

推荐配置值与依据

不是越长越好,也不是越短越安全,需结合业务连接特征设定:

  • 普通 HTTP/1.1(短连接为主):设为 5s15s 即可。绝大多数请求已在几秒内完成,留出缓冲应对偶发延迟
  • 启用了 Keep-Alive 或大量长轮询:建议 30s60s
阅读全文

本文共计840个文字,预计阅读时间需要4分钟。

如何设置worker_shutdown_timeout以实现负载均衡在重载时平滑切换连接?

当需要让Nginx在重载配置时平滑切换,可以使用以下命令:

worker_shutdown_timeout 的作用机制

当执行 reload 时,Master 进程会启动新 worker,同时向旧 worker 发送 QUIT 信号,进入优雅关闭流程。此时旧 worker 不再接受新连接,但会继续处理已建立的活跃连接(包括后端 upstream 的长连接、客户端未完成的请求等)。worker_shutdown_timeout 就是这个“继续服务”的最长时限。超时后,即使连接尚未自然结束,worker 也会强制退出。

若该值缺失或设为 0(默认无值),旧 worker 可能无限期等待,导致:

  • worker 进程数虚高,资源占用持续上升
  • 部分连接被异常中止(如 TCP RST),影响用户体验
  • 负载均衡节点看似在线,实则无法及时释放连接,干扰上游健康检查与故障转移

推荐配置值与依据

不是越长越好,也不是越短越安全,需结合业务连接特征设定:

  • 普通 HTTP/1.1(短连接为主):设为 5s15s 即可。绝大多数请求已在几秒内完成,留出缓冲应对偶发延迟
  • 启用了 Keep-Alive 或大量长轮询:建议 30s60s
阅读全文