【Nginx那些事】nginx原理解析

【Nginx那些事】系列

【Nginx那些事】nginx 安装及常用指令
【Nginx那些事】Nginx 配置文件说明
【Nginx那些事】nginx原理解析
【Nginx那些事】nginx配置实例(一)反向代理
【Nginx那些事】nginx配置实例(二)负载均衡
【Nginx那些事】nginx配置实例(三)动静分离
【Nginx那些事】nginx配置实例(四)搭建高可用集群

【Nginx那些事】nginx原理解析

nginx的master和worker关系

master只有一个,是领导,负责管理、监控。worker有很多个,是打工者,负责处理领导分发的任务。
在这里插入图片描述
但master不会去分配任务,而是会通知各位worker一声,各位worker再去争夺资源(客户端),已经抢到的不会再去争夺下一个资源,争夺到后worker开始读取请求-解析请求-处理请求,数据彻底返回客户端之后,这个worker争夺事件就算结束,可以继续争夺下一个资源。
在这里插入图片描述

思考

1、一个master和多个woker的好处
对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。其次,采用独立的进程,可以让互相之间不会影响,一个进程退出后,其它进程还在工作,服务不会中断,master进程则很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。

2、设置多少个woker合适
Nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程, 但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是千上万个请求也不在话下。每个worker的线程可以把一个cpu的性能发挥到极致。所以worker数和服务器的cpu数相等是最为适宜的(一般设置work数与cpu数一致)。设少了会浪费cpu,设多了会造成cpu频繁切换上下文带来的损耗。

3、连接数worker_ connection计算
这个值是表示每个worker进程所能建立连接的最大值,所以,一个nginx 能建立的最大连接数,应该是worker_connections * worker_processes。当然,这里说的是最大连接数,对于HTTP 请求本地资源来说,能够支持的最大并发数量是worker_connections * worker_processes,如果是支持http1.1的浏览器每次访问要占两个连接,所以普通的静态访问最大并发数是: worker_connections * worker_processes / 2, 而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections * worker_proceses/4. 因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接
worker_connections :连接数
worker_processes:worker数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鳄鱼儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值