前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务器-Nginx的Web请求处理机制

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

作者头像
小二三不乌
发布2018-08-02 09:57:38
6680
发布2018-08-02 09:57:38
举报
文章被收录于专栏:小二的折腾日记

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

并行处理请求的三种方式

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

多进程方式

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

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

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

所以共有四种方式:

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务器-Nginx的Web请求处理机制
    • 并行处理请求的三种方式
      • 多进程方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档