8. nginx热升级
1. 热升级: 在nginx不停止服务的情况下, 升级nginx服务. 在升级的过程中, 可能会出现很多情况, 比如老的worker进程退不掉, 新的worker进程有问题, 可能需要回滚.
2. 热升级流程:
1) 备份;
2) 向master进程发送USR2信号;
3) master进程修改pid文件名, 加后缀.oldbin;
4) master进程会用新的nginx二进制可执行文件启动新的master进程;
5) 向老的master进程发送WINCH信号, 优雅的关闭老的worker, 不过老的master进程依然在, 为了方便回滚;
6) 如果升级后出现问题需要回滚, 向老的master发送HUP信号, 向新的master发送QUIT信号.
3. 优雅的关闭worker时, 有可能需要很长时间才会关闭掉所有的老的worker进程, 可以通过设置 worker_shutdown_timeout 强制关闭所有的老的worker进程.