1. 将就的Nginx文件换成新的Nginx文件(注意备份) 2. 向master 进程发送USR2信号 3. master进程修改pid文件名,加上后缀.oldbin 4. master进程用新Nginx文件启动新master进程 5. 向老master进程发送WINCH信号,关闭老worker 6. 回滚,向老master发送HUP信号,向新master 发送QUIT信号
当新老master同时存在的时候,他们都可以接受请求,老master会把listen的句柄通过epoll_ctl从epoll中移除,不再监听80或者443端口
1. 设置定时器 worker_shutdown_timeout 2. 关闭监听句柄 3. 关闭空闲连接 4. 在循环中等待全部连接关闭 (时间可能很长) 5. 退出进程