• Star
    2018-11-17
    监听端口不是只能同时打开一个吗。比如80端口,不可能同时监听同一端口啊

    作者回复: 子进程可以共享使用父进程已经打开的端口。所以,新老worker进程因为是都是同一个master进程的子进程,所以可以的。

     1
     9
  • 风竹
    2018-11-26
    reload流程里,第3步,master进程打开新的监听端口;
    意思是指,在新的配置文件里,如果我们监听了新的端口,master会打开这个监听端口,以便新起的worker进程进行监听和任务处理 吗?
    如果在配置文件关闭了一些端口监听,那么这个时候master是如何处理的呢?关闭这个监听端口吗?
    如果master关闭了配置文件不再监听的端口,那么还在任务处理中的老worker进程是怎么工作的?

    作者回复: 三个问题:1、是的。2、新master不存在 关闭的概念,它只不再打开老master会打开的端口。3、即使不再监听80端口,已经建立的连接仍然可以继续处理。

    
     3
  • Geek_007
    2019-03-23
    老师你好,如果nginx上的配置的是websocket,且nginx需要频繁的reload。会导致大量的work进程堆积吗?假设一个nginx 上有500个虚拟主机,QPS也十分大,后端都是容器,所以需要频繁更改upstream而导致频繁reload。再加上很多是websocket协议或长连接。nginx性能会有影响吗?

    作者回复: 会,如果是频繁修改upstream集群信息,那么不建议使用reload方式,你的修改目标非常简单明确,而reload是重新对所有配置生效,建议使用openresty实现API服务,由API来直接修改upstream信息。

    
     2
  • 码农Kevin亮
    2019-03-07
    请教下老师,“关闭监听句柄”中的句柄是什么概念?我查了很多解释都不太理解

    作者回复: 就是socket,也可以叫套接字,或者叫fd文件句柄

    
     1
  • Jack
    2018-11-24
    多个子进程监听父进程打开的端口,是不是会引起惊群效应,降低服务器性能

    作者回复: 惊群是操作系统内核实现上引起的问题,最新的内核已经没有太大问题了,如果使用了reuseport那么就不需要考虑worker间负载均衡问题了

    
     1
  • Tao
    2019-12-01
    老师 第二步Master进程监听新的端口,这时候Master进程的ID号为啥没有改变呢

    作者回复: lD?你是说PID进程ID吗?master进程没有变化,但worker进程ID是变了的

    
    
  • 疆封
    2019-08-13
    老师你好,想问下,Master进程是如何区分异常退出的Worker进程(需要重新拉起一个Worker)和需要优雅退出的老Worker进程的(不需要重新拉起)?如果都采用捕获CHLD信号方式来处理,极端情况下(多个Worker同时退出),是否会出现信号丢失的问题?

    作者回复: 优雅退出是由master向worker发送命令的(通过基于TCP的channel通讯或者SIGQUIT信号),而worker异常退出是由操作系统向master发送CHLD信号通知的,两者不同

    
    
  • Geek_6bb900
    2019-05-05
    老师您好,想请问下为什么在reload时,客户端499的请求会增加呢?单机qps在80k左右,在reload时cpu使用率会增加,同时499请求也增加了很多

    作者回复: 499错误码,是Nginx发现客户端主动关闭连接后,记录到access日志中的。是不是客户端接收响应超时了?你可以先在客户端统计下是不是这个原因,再调查为什么会导致超时

    
    
  • WL
    2019-04-16
    老师请问一下监听句柄这个概念怎么理解, 监听句柄的对应实现是一个线程吗?

    作者回复: 不是,即调用过listen的socket。另外:子进程会自动共享父进程被listen的socket。

    
    
  • 齐航
    2019-04-02
    老师,您好,我想请问一下,就是在reload后,老的worker 已经建立的连接请求还会处理么?是处理完了之后,老的worker才优雅退出么?然后老的worker只是不接受新的连接请求了,是这样的么?

    作者回复: 对的,已建立连接继续处理,处理完才优雅退出。

    
    
  • 罐头瓶子
    2019-03-15
    新的配置中关闭的端口reload之后也不会关闭,是这样吧

    作者回复: 对,master进程并不会关闭端口

    
    
  • catlee
    2019-03-02
    老师,您好。本节里面像您说的第二步实际上执行的是nginx -t检查配置文件正确与否的操作,那么如果配置文件语法错了,这时候会不会影响已经建立连接的请求,即nginx是否还在正常工作?

    作者回复: 不会影响,如果语法错误,reload会中断,原worker进程仍然按照原配置项提供服务

    
    
  • 小猪
    2019-02-13
    nginx热部署、热升级在docker容器运行方式中怎么处理呢?

    作者回复: 使用docker exec进入容器中操作

    
    
  • smartyoung
    2019-01-23
    老师,请问有没有什么简单的技术手段可以在reload的时候让work进程不更新,就是进程号不变,然后然后配置生效?

    作者回复: 不行,reload依赖新worker进程才能生效

    
    
  • john-jy
    2018-12-20
    请问一下,nginx -s reload是先创建新worker,然后在关闭旧worker,那未关闭的worker进程还会处理新来的请求吗?比如如果配置文件比较大,新worker创建比较慢,这时进来的请求是分配到旧的worker里还是排队等新的worker创建好

    作者回复: 未关闭的worker旧进程不会处理新来的请求,因为所在进程不再listen了。
    一定是全部配置解析好,并且验证没有错误后,才会开始创建新worker进程。

    
    
  • 豪华
    2018-12-06
    老师我启用了四个nginx子进程,为何只有一个子进程在工作.
    环境是:window7操作系统
    nginx1.13.8
    使用ab进行压测

    作者回复: 多个连接才会使用多个worker进程

    
    
  • 若我若鱼
    2018-11-27
    是不是只要执行 reload , 就可以省略 -t 检测了, 如果配置不正确, 什么都不会影响?

    作者回复: 是的

    
    
我们在线,来聊聊吧