1 Master && Workder

Nginx原理之Master和Worker.png

2 Nginx的Worker是如何工作的?

Nginx的Worker是如何工作的.png

3 一个Master和多个Worker的好处

  • Nginx的原理 - 图3对于每个worker进程来说,独立的进程,不需要枷锁,省略了锁带来的开销,同时在编程以及问题查找时,也会方便很多。
  • Nginx的原理 - 图4采用独立的进程 ,可以互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进行则可以很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worer上的所有请求失败,不过不会影响到所有的请求,降低了风险,这也是我们使用nginx -s reload能热部署的原因所在。

4 设置多少个worker合适?

  • worker数量和服务器的CPU数量相等最为合适。
  • 设置worker数量:
  1. worker_processes 4
  • worker绑定CPU(4个worker绑定4核CPU)
  1. worker_cpu_affinity 0001 0010 0100 1000
  • worker绑定CPU(4个worker绑定8核CPU中的4个)
  1. worker_cpu_affinity 00000001 00000010 00000100 00001000

5 连接数worker_connections

5.1 发送一个请求,占用了worker几个连接数?

  • 如果是普通静态访问,是2个连接数。
  • 如果是反向代理来说,是4个连接数。

5.2 Nginx有1个Master,有4个worker,每个worker支持的最大连接数1024,支持的最大并发数是多少?

  • 如果是普通的静态访问,最大的并发数是:worker_connections worker_processes / 2 = 1024 4 / 2
  • 如果作为反向代理来说,最大的并发数是:worker_connections worker_processes / 4 = 1024 4 / 4