Nginx高性能的原因

1.epoll多路复用

epoll多路复用(解决了io阻塞的问题)
bio模型:一个客户端一个服务端,服务端需要等待客户端的所有信息发送过来后进行处理
select模型: 例如与100个客户端进行连接,java server监听100个客户端是否有变化,若有变化则唤醒自己,循环便利100个连接,再到发生变化的一个或者多个连接,然后几进行read操作。read完后就返回。(每个都要轮询,效率低,数量有限制)
epoll模型:监听100个客户端连接是否有变化,有变化设置回调函数,唤醒自己并执行。

2.master-worker进程模型

在这里插入图片描述
master-worker进程模型(完成平滑的重启)
master和worker是父子关系。
master可以管理worker的地址空间。
nginx互斥锁,worker会去抢占,抢占到后会进行连接。
为什么nginx重启,不影响连接?master会发送信号给worker,把它的句柄给其他worker进行处理。
worker进程都是单进程的。不允许有阻塞操作。高性能IO操作。因为我们使用多线程主要是很多io操作,但是nginx使用了epoll的方式进行处理,就不需要使用多线程

3.协程机制

协程机制(将每个用户的请求,对应到内存中的协程中)
依附于线程的内存模型,切换开销小
遇到阻塞级归还执行权,代码同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值