平滑 reload 让新 worker 使用新配置,同时让旧 worker 完成当前工作。目标是在应用变更时不突然中断活动请求。
跟踪正在进行的下载
假设 reload 时有下载正在进行。新 worker 开始接受新连接。旧 worker 可以继续服务已有下载,直到下载完成,再在剩余工作结束后退出。
对于典型安装,可以这样验证并 reload:
sh
nginx -t && nginx -s reload
第一个命令检查配置;只有检查成功,第二个命令才请求 reload。请使用适合安装环境的配置路径和权限。如果应用新配置失败,master 会继续运行旧配置。
长连接改变取舍
WebSocket 可能让旧 worker 存活更久。worker_shutdown_timeout 可以限制等待退出的时间,但到达该限制时可能关闭连接。应根据客户端能否安全重连或恢复工作来选择这个时间。
在下载和 WebSocket 会话进行时测试 reload。检查 worker 存活时间、错误和客户端恢复情况。语法检查成功本身不能证明新后端路由正常。
.
