Nginx的原理解析

本文详细解析了Nginx的架构,重点讨论了一个master和多个worker进程的优势,以及如何根据服务器CPU数量合理配置worker进程数目。同时,阐述了发送请求时worker连接数的占用情况,并给出了计算Nginx最大并发数的方法。
摘要由CSDN通过智能技术生成

 从上图可以看到 一个mastrer进程底下有多个woker进程


 在这张图我们可以看到,当client(客户端)发送请求,请求到nginx中,首先到master,当master收到请求后,通知它底下的woker,因为一个master下面有多个woker,而且nginx本身也是不直接支持java的,在进行ava操作时还需要依赖我们tomcat,woker可能还需要做一些请求转发或者反向代理通过我们tomcat查询数据库获取结果,所以woker是采用的争抢机制去获取任务

一个master和多个woker有什么好处?

对于每个woker都是独立的进程,不需要加锁。所以省掉了锁带来的开销,同时再变成以及问题查找的时候,也会方便很多。其次独立的进程互相之间并不影响,一个进程退出后其他的进程还会继续工作。当然woker进程的异常退出肯定就是程序出BUG了,所以才异常推出,会导致当前woker中的所有请求失败,但是并不会影响其他的woker进程,所以设计多个woker还降低了风险

需要设置多少个woker才最合适呢?

Nginx和redis类似都采用了 io多路复用机制(windos系统没有这个机制),每个woker都是一个独立的进程,但它的每个进程只有一个主线程,通过异步阻塞的方式处理请求,即便有成千上万请求也没问题,每个worker的线程都可以把一个cpu发挥到极致,所以worker数量设置成和服务器的cpu数量一样的会最合适,设置多了吧就造成cpu频繁切换上下文带来的损耗。

发送一个请求 会占用worker连接数几个?

如果调用的是静态资源 发送请求一个  请求返回一个,所以是两个; 刚刚我们已经说了Nginx不支持java,当我们需要访问数据库获取数据的时候,就需要额外用到两个作为请求和返回去调用tomcat,让tomcat去和数据库完成交互,所以是四个。

nginx最大并发数怎么计算?

普通的静态访问最大并发数:worker_connections(连接数)*worker_processes(数量)/2;

http作为反向代理来说最大并发数就要除以4 因为它的worker连接数是4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值