nginx-工作原理简单理解(6)
1.nginx的工作是有master和workers进程进行处理工作的
master-workers 的机制的好处
首先,对于每个 worker 进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,
同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会
影响,一个进程退出后,其它进程还在工作,服务不会中断,master 进程则很快启动新的
worker 进程。当然,worker 进程的异常退出,肯定是程序有 bug 了,异常退出,会导致当
前 worker 上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
设置worker数量
Nginx 同 redis 类似都采用了 io 多路复用机制,每个 worker 都是一个独立的进程,但每个进
程里只有一个主线程,通过异步非阻塞的方式来处理请求, 即使是千上万个请求也不在话
下。每个 worker 的线程可以把一个 cpu 的性能发挥到极致。所以 worker 数和服务器的 cpu
数相等是最为适宜的。设少了会浪费 cpu,设多了会造成 cpu 频繁切换上下文带来的损耗
worker_connection
表示一个worker进程建立连接的最大值,一个nginx连接的最大的数据量为
worker数量 * 设置的worker的连接数 那么连接静态资源的最大并发数是
worker数量 * 设置的worker的连接数/2 一个静态资源需要消耗两个谅解
一个反向代理需要消耗四个连接 客户端连接nginx,nginx连接服务器资源一去一回 就是四个
那么最大的并发数是worker数量 * 设置的worker的连接数/4