专栏首页小二的折腾日记服务器-Nginx的Web请求处理机制

服务器-Nginx的Web请求处理机制

服务器-Nginx的Web请求处理机制

并行处理请求的三种方式

web服务器和客户端是一对多的关系,所以web服务器要能同时为多个客户端提供服务。一般有三种方式:多进程方式、多线程方式和异步方式。

多进程方式

服务器每接收到一个客户端时,就由服务器主进程生成一个子进程与该客户端交互 ,直到连接断开,子进程结束。

  • 优点:设计和实现相对简单、子进程之间相互独立,处理客户端请求的过程彼此不干扰,一个有问题不会影响其他的。保证了稳定性。子进程退出时,资源会被系统回收,不会留下垃圾。
  • 缺点:每生成一个子进程,都要进行内存复制的操作,在资源和时间上会有额外的开销。 Apache采用的“预生成进程”可以稍微解决大并发请求,但是本质是多进程,无法解决多并发的问题。多线程方式 服务器每接收到一个客户端时,会由服务器主进程派生一个线程出来和该客户端进行交互。
  • 优点:产生一个线程的开销要小于一个进程,比较规范,利于协作。
  • 缺点:多个线程在一个内存空间中,彼此互相影响,对内存的管理增加了出错的风险。异步方式 同步、异步与阻塞、非阻塞 同步和异步描述的是通信模式的概念 同步:发送方发送请求后,需要等待接收到接收方发回的响应后,才接着发送下一个请求。所有的请求在服务器端得到同步,发送方和接收方对请求的处理步调是一致的。 异步:发送方发送请求后,不等待接收方响应这个请求,就继续发送下一个请求。所有来自发送方的请求形成一个队列,接收方处理完后通知发送方。

阻塞和非阻塞描述的是进程处理调用的方式,在网络通信中,主要指的是网络套接字socket的阻塞和非阻塞方式,socket实质上就是IO操作 阻塞:调用结果返回之前,当前的线程从运行状态被挂起,一直等到调用结果返回之后,才进入就绪状态,获取CPU继续执行。 非阻塞:调用结果返回之前,线程不会被挂起,而是立即返回执行下一个周期。

所以共有四种方式:

  • 同步阻塞:发送方发送请求后,一直等待响应;接收方处理请求时不能立即等到结果的时候,就会一直等待返回结果,才响应发送方,期间不能执行任何其他工作。
  • 同步非阻塞:发送方发送请求后,一直等待响应;接收方处理请求时不能立即等到结果的时候,就会立即返回,去做别的事情,但是由于没有得到结果,也不响应发送方,发送方一直等待。
  • 异步阻塞:发送方发送请求后,不等待响应;接收方处理请求时不能立即等到结果的时候,就会一直等待返回结果,才响应发送方,期间不能执行任何其他工作。
  • 异步非阻塞:发送方发送请求后,不等待响应;接收方处理请求时不能立即等到结果的时候,就会立即返回,去做别的事情,但是由于没有得到结果,也不响应发送方,发送方一直等待。
Nginx如何处理请求

Nginx采用的是异步非阻塞的方式。采用Master-work模型(其实实际也有single的单进程模式,但是性能较差,很少使用)。每个工作进程采用异步非阻塞的方式。 Nginx服务器的工作进程调用IO后,就去进行其他工作,当IO调用返回,会通知工作进程。接下来就是怎么通知给工作进程了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面试总结-操作系统

    程序员按照分段系统的地址结构将地址分为段号与段内位移量,地址变换机构将段内位移量分解为页号和页内位移量。

    小二三不乌
  • day5(面向对象2)

    向上转型,向上转型 千万不要出现这样的操作,就是将父类对象转换成子类类型。 我们能转换的是父类应用指向了自己的子类对象时,该引用可以被提升,也可以被强制转换。 ...

    小二三不乌
  • 一文总结计算机网络

    它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。 现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者...

    小二三不乌
  • 瞎扯 Hbase ,很多人都理解错了

    今天扯一下 Hbase ,我对 Hbase 的了解起源于两篇文章Understanding HBase and BigTable和《李逵麻子,李鬼坑人--Big...

    哒呵呵
  • 进程的状态转换详解

      进程状态:一个进程的生命周期可以划分为一组状态,这些状态刻画了整个进程。进程状态即体现一个进程的生命状态。

    郭楷丰
  • Spring WebClient vs. RestTemplate

    本教程中,我们将对比 Spring 的两种 Web 客户端实现 —— RestTemplate 和 Spring 5 中全新的 Reactive 替代方案 We...

    用户1516716
  • Hbase入门(一)——初识Hbase

    本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索。而这种特性...

    实时计算
  • BIO NIO AIO演变1 BIO2 NIO3 AIO4 常见面试题5 总结

    Block-IO 是一种阻塞同步的通信模式。 常说的Socket IO 一般指的是BIO。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信...

    JavaEdge
  • TFS 2010 客户端汇总

    Visual Studio Team System 2008 Service Pack 1 针对 Team Foundation Server 2010 的前向...

    张善友
  • 14、商品分类等模块及flex布局

    这是这本章节的重点,大家可以看到在我的页面基本布局中大量使用了flex布局,所以我觉得这个很重要。 (1)这是对flex的语法总结的一份思维导图,大家可以看看

    Ewall

扫码关注云+社区

领取腾讯云代金券