reload 流程
- 向 master 进程发送 HUP 信号(reload 命令)
- master 进程校验语法是否正确;
- master 进程打开新的监听端口; linux 系统子进程会继承父进程所有已经打开的端口
- master 进程用新配置启动新的 worker 子进程;
- master 进程向老 worker 子进程发送 QUIT 信号;
- 老worker 进程关闭监听句柄, 处理完当前连接后结束进程;
worker 进程 优雅的关闭
- 设置定时器: worker_shutdown_timeout;
- 老worker 进程退不掉时(web_socket/tcp),配置 worker_shutdown_timeout: 老 worker 子进程退出超时时间;
- 关闭监听句柄;
- 关闭空闲连接;
- 在循环中等待全部连接关闭;连接关闭超时则强制关闭;
- 退出进程;
网络收发与Nginx 事件间的对应关系
- 以太网 MTU 默认1500字节
- 读事件: accept 建立连接;read 读消息; 请求建立tcp连接事件-accept; tcp连接可读事件-read; tcp 连接关闭事件-read
- 写事件:write