作者回复: 子进程可以共享使用父进程已经打开的端口。所以,新老worker进程因为是都是同一个master进程的子进程,所以可以的。
作者回复: 三个问题:1、是的。2、新master不存在 关闭的概念,它只不再打开老master会打开的端口。3、即使不再监听80端口,已经建立的连接仍然可以继续处理。
作者回复: 会,如果是频繁修改upstream集群信息,那么不建议使用reload方式,你的修改目标非常简单明确,而reload是重新对所有配置生效,建议使用openresty实现API服务,由API来直接修改upstream信息。
作者回复: 就是socket,也可以叫套接字,或者叫fd文件句柄
作者回复: 惊群是操作系统内核实现上引起的问题,最新的内核已经没有太大问题了,如果使用了reuseport那么就不需要考虑worker间负载均衡问题了
作者回复: lD?你是说PID进程ID吗?master进程没有变化,但worker进程ID是变了的
作者回复: 优雅退出是由master向worker发送命令的(通过基于TCP的channel通讯或者SIGQUIT信号),而worker异常退出是由操作系统向master发送CHLD信号通知的,两者不同
作者回复: 499错误码,是Nginx发现客户端主动关闭连接后,记录到access日志中的。是不是客户端接收响应超时了?你可以先在客户端统计下是不是这个原因,再调查为什么会导致超时
作者回复: 不是,即调用过listen的socket。另外:子进程会自动共享父进程被listen的socket。
作者回复: 对的,已建立连接继续处理,处理完才优雅退出。
作者回复: 对,master进程并不会关闭端口
作者回复: 不会影响,如果语法错误,reload会中断,原worker进程仍然按照原配置项提供服务
作者回复: 使用docker exec进入容器中操作
作者回复: 不行,reload依赖新worker进程才能生效
作者回复: 未关闭的worker旧进程不会处理新来的请求,因为所在进程不再listen了。
一定是全部配置解析好,并且验证没有错误后,才会开始创建新worker进程。
作者回复: 多个连接才会使用多个worker进程
作者回复: 是的