1 Master && Workder
2 Nginx的Worker是如何工作的?
3 一个Master和多个Worker的好处
- 对于每个worker进程来说,独立的进程,不需要枷锁,省略了锁带来的开销,同时在编程以及问题查找时,也会方便很多。
- 采用独立的进程 ,可以互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进行则可以很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worer上的所有请求失败,不过不会影响到所有的请求,降低了风险,这也是我们使用
nginx -s reload
能热部署的原因所在。
4 设置多少个worker合适?
- worker数量和服务器的CPU数量相等最为合适。
- 设置worker数量:
worker_processes 4
- worker绑定CPU(4个worker绑定4核CPU)
worker_cpu_affinity 0001 0010 0100 1000
- worker绑定CPU(4个worker绑定8核CPU中的4个)
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。