nginx作用_Nginx实现高并发的原理分析

dc95e55729eb6c97d31c3e5366c0541d.png

本文将讲解一下内容:

  • Nginx的进程模型分析

  • Nginx实现高并发原理分析

上一篇PHP-FPM进程模型一文中讲解了PHP-FPM的进程模型,这边文章首先会讲解一下Nginx的进程模型,只有先理解了Nginx进程模型,才能深入理解Nginx实现高并发的原理。

一、Nginx进程模型介绍

Nginx的进程模型也是采用Master/Worker形式。当Nginx启动时,会先创建一个Master进程,Master进程会fork出若干个Worker子进程(具体是多少个子进程可以在Nginx的配置文件中来配置) Master进程的作用如下:
  • Master进程主要是接收外界信号(如重载配置等),传递给Worker进程

  • 监听Worker进程的运行状态,负责Worke进程的创建和销毁

Worker进程的作用如下:
  • 处理Master进程传递过来的信号

  • 处理网络事件,比如客户端请求

这种进程模型看似跟PHP-FPM的处理方式类似,它们之间的区别在哪里呢? 回答这个问题,就要从两者的定位入手了。 Nginx是一个HTTP服务器,负责转发请求,不负责处理具体的业务。PHP-FPM需要处理具体的业务,特别是有些是耗时的业务场景。 在Nginx+PHP-FPM的架构中,Nginx的Worker进程将请求转发给PHP-FPM后,并没有停下来等待PHP-FPM返回数据,而是设置了一个回调事件,然后就去处理请他请求了。 当PHP-FPM业务逻辑处理完后,会执行Nginx中Worker进程设置的回调事件,这时Nginx的Worker进程就会停下手中的工作,开始处理回调函数的返回值,直到数据返回给用户端。 所以,Nginx的Worker进程无需等待,可以一直处理请求。但是PHP-FPM的Worker进程需要将每个请求处理完才能处理下一个请求。

52f75034fe434ef8b8b6fd5dfd5bc27b.png

二、Nginx实现高并发的原理分析 Nginx和Apache都是Web服务器,但是两者有着很大的区别。 Apache处理请求是同步阻塞方式,每一个请求到达,apache都会去fork一个子进程去处理这个请求,直到这个请求处理完毕。低并发时,这种模式没有什么缺点。面对高并发时,如果要想提高处理能力,就需要创建很多进 程,进程太多了会出现进程切换,浪费CPU资源。 与Apache相比,Nginx在处理高并发时特别有优势。Nginx是如何实现高并发的呢?答案就是I/O复用技术(select、poll、epoll模型),即多个I/O可以复用一个进程。
  • elect、poll原理:当连接有I/O流事件产生的时候,就会去唤醒进程去处理,但是进程不知道是哪个连接产生的I/O流事件,于是就得挨个去遍历进程,遍历进程会浪费大量CPU时间片。select、poll原理是一样的,只不过select只能观察1024个连接,poll可以观察无限个连接。

  • epoll原理连接有I/O流事件产生的时候,epoll就会去告诉进程哪个连接有I/O流事件产生,然后进程就去处理这个链接。

Nginx就是采用epoll模型来实现的。流程就像上文所说的一样,每处理完一个请求,就会设置一个事件回调,然后开始处理新的请求。当回调事件被触发时再腾出手来处理回调事件之后的逻辑,整个过程中不会出现等待的情况。所以理论上Ngnix的一个进程就可以处理无限数量的连接,而且无需轮询。 以上就是对文中开始提到的两个问题的解答,有点绕,可能没有完全解释清楚。后面将会在新的文章中把大家提出的问题逐步解答清楚。 来源:https://baijiahao.baidu.com/s?id=1659299508294595073宜

岁月峥嵘

不忘初心

b885b719c69dc8d850dc3dabf138d460.png-PHP开源社区-忌

平庸懒惰

不求上进

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值