Nginx与Apache的对比
Apache一个线程只能处理一个请求,并且是阻塞式的
Nginx一个线程可以处理多个请求,并且是非阻塞式的
Nginx
职责
- 静态资源服务
- 反向代理
- API服务
优势
- 高并发,高性能
- 扩展性好
- 异步非阻塞的事件驱动模型
- 高可靠性
- 热部署、平滑升级
- BSD许可证,允许二次开发
master 不处理用户请求,只用来监控worker process是否不工作了,如果不工作了,就重新开始那个进程,以保持进程结构,只有worker process负责处理用户请求。
master下的子进程是通过共享内存进行通信的。
sigchild 如果子进程挂了,会给父进程发信号
sighup 使进程重新读取配置文件
worker进程的数量
默认情况下nginx.conf 配置文件中,worker_processesde 默认值为auto,也就是cpu有几核就有几个worker进程。
配置文件重载
热部署
之所以发送WINCH信号是因为发送QUIT信号会导致master和worker子进程退出。WINCH会将worker子进程退出来避免接收新的用户请求,从而保证新请求都能路由到新的master上
实际操作
- 先去安装目录下把Nginx备份
cp nginx nginx.bak
kill -s SIGUSR2 23098
已经新开启了一个master进程
会发现它生成了nginx.pid 来记录当前主进程的号,还会生成nginx.pid.oldbin来记录之前的号- 使用WINCH给旧进程发送信号量
- 若对新的nginx验证用过就可以kill旧的进程
- 如果不通过,就可进行回滚
kill -s SIGHUP 旧的进程号