1.在通过nginx配置文件切换后端服务流量的时候,需要平滑的去关闭后端服务流量,这里就得使用nginx -s reload命令来重载nginx配置文件,使nginx能够优雅的去关闭老的进程
2.nginx 分 master 进程和 worker 进程,当执行nginx -s reload命令时master会起新的worker进程 处理新来的请求,等旧的请求都被处理完之后master会回收旧的worker进程,所以不会影响变更配置文件那一刻的业务,但是那一刻的worker 进程数会翻倍,若是在业务流量低谷期执行此操作不会有太大影响
3.使用nginx -s reload命令也会去检查nginx的配置文件是否正确,若是错误会退出执行,保持原来的配置文件配置去正常接收请求
4.在新的配置文件里,如果我们监听了新的端口,master会打开这个监听端口,用新起的worker进程进行监听和任务处理,新的配置文件中即使不再监听某个端口,已经建立的连接仍然可以继续处理
5.流程为:master进程用新配置启动新的worker 进程,向老worker 进程发送QUIT号,老worker进程关闭监听,处理完当前连接后结束进程
6.可以结合应用服务器的端口连接数和端口流量来判断是否已经没有请求
netstat -anp |grep 8083 #这个是查看8083端口的所有请求连接状态,包括TIME_WAIT等
netstat -anp |grep 8083|grep ESTABLISHED #这个是查看8083端口已连接状态的请求
tcpdump -i ens160 port 80 #检查网卡80端口的流量