Nginx是如何处理一个HTTP请求的

Nginx是如何处理一个HTTP请求的呢

Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。它结合多进程机制和异步机制 ,异步机制使用的是异步非阻塞方式 ,接下来就给大家介绍一下 Nginx 的多线程机制和异步非阻塞机制。
1、多进程机制
服务器每当收到一个客户端时,就有服务器主进程 ( master process )生成一个子进程( worker process )出来和客户端建立连接进行交互,直到连接断开,该子进程就结束了。
使用进程的好处是各个进程之间相互独立,不需要加锁,减少了使用锁对性能造成影响,同时降低编程的复杂度,降低开发成本。其次,采用独立的进程,可以让进程互相之间不会影响 ,如果一个进程发生异常退出时,其它进程正常工作, master 进程则很快启动新的 worker 进程,确保服务不会中断,从而将风险降到最低。
缺点是操作系统生成一个子进程需要进行内存复制等操作,在资源和时间上会产生一定的开销。当有大量请求时,会导致系统性能下降 。
2、异步非阻塞机制
每个工作进程使用异步非阻塞方式 ,可以处理多个客户端请求 。当某个工作进程接收到客户端的请求以后,调用 IO 进行处理,如果不能立即得到结果,就去处理其他请求 (即为非阻塞 );而客户端在此期间也无需等待响应 ,可以去处理其他事情(即为异步)。当 IO 返回时,就会通知此工作进程 ;该进程得到通知,暂时挂起当前处理的事务去 响应客户端请求。

Nginx是如何处理一个HTTP请求的相关推荐

  1. Nginx是如何处理一个请求的呢?如何通过不同于80的端口开启Nginx?

    首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面 先初始化好这个监控的socket,再进行listen 然后再fork出多个子进程出来, ...

  2. Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的

    文章目录 Tomcat中的NIO模型 Servlet 请求处理分析 Servlet请求处理流程示意图 Servlet请求处理源码剖析 Mapper 组件体系结构 Tomcat中的NIO模型 Tomca ...

  3. tomact如何处理一个http请求?

    tomcat 从http 端口接收到一个请求后: 1. 2. 3. Tomcat receives a request on an HTTP portd1) The request is receiv ...

  4. nginx学习笔记(7)Nginx如何处理一个请求---转载

    如何防止处理未定义主机名的请求 基于域名和IP混合的虚拟主机 一个简单PHP站点配置 基于名字的虚拟主机 Nginx首先选定由哪一个虚拟主机来处理请求.让我们从一个简单的配置(其中全部3个虚拟主机都在 ...

  5. nginx php 跨域访问权限,nginx + php 实现跨域请求填坑笔记

    最近自己构建了一个轻量级的 MVC 框架,现在将该MVC用于生产环境的项目中,目前因为项目中有跨域的请求,所以需要做一些CORS授权,但在实际使用出现了一些问题,目前已解决,故做下记录. 服务器:ce ...

  6. 一个http请求的详细过程

    目录 整个流程 URL解析 DNS解析 与服务器建立连接(发起TCP的3次握手) 与下面的几层 TCP层 网络层 链路层 物理层 浏览器给WEB服务器发送一个HTTP请求 请求行 请求头部 请求数据 ...

  7. 一个http请求的全过程是怎样的?

    在理解http请求之前先认识几个知识点: HTTP和浏览器原理* 1.浏览器输入 url 到呈现出内容发生了什么 (1)浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求: (2 ...

  8. 一个HTTP请求的曲折经历

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:8rr.co/6usv 从一个经典的面试题说起,输入URL到 ...

  9. 我是一个秒杀请求,正在逃离这颗星球...

    作者 | 悟空聊架构 来源 | 悟空聊架构(ID:PassJava666) 星球简介 地点:β-410 星系,A-731电商星球. 时间:新纪元 2036 年. 星球简介: 中文名:A-731电商星球 ...

  10. Nginx 实现AJAX跨域请求

    AJAX从一个域请求另一个域会有跨域的问题.那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Control*指令.如下所示: 1 ...

最新文章

  1. SpringBoot 框架中 使用Spring Aop 、创建注解、创建枚举类 使用过程记录
  2. Centos中文输入法安装以及切换
  3. javascript的匿名函数
  4. 从实验角度来验证混沌数据可以被预测吗?
  5. 中小企业网站建设不妨试试快速建站
  6. 构建安全的Xml Web Service系列之如何察看SoapMessage
  7. 在JavaScript中以Hours24:Minutes:Seconds格式获取当前时间
  8. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.4. 额外特性
  9. C++走向远洋——60(十四周阅读程序、STL中的简单容器和迭代器)
  10. 关于JS中的严格模式
  11. 电子商务网站PPT选择服务器,第8章 电子商务系统规划与建设课件.ppt
  12. casual Convolution 和 dilated Convolution
  13. certbot泛域名证书申请
  14. VB.net 删除文件、文件夹
  15. 袁萌浅谈C919大飞机(三)
  16. 金蝶协同办公平台任意文件下载漏洞(无需登录)
  17. 【APICloud系列|29】dialogBox模块(对话框)的实现
  18. 如何编译DD-WRT
  19. 二叉树的度为2的节点和叶子节点的关系
  20. [转]Leveldb 实现原理

热门文章

  1. 关于 Failed to resolve: org.jetbrains.kotlin:kotlin-stdlib-jre7的错误
  2. 萤火虫算法_一种优化方法:蜂鸟优化算法
  3. ukey其他错误_UKEY不能识别解决方法
  4. 大量思科设备存在IPv6死亡之Ping漏洞
  5. matlab:lena图像在空域和频域的均匀滤波
  6. JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)
  7. c语言经典程序技能高考,计算机类技能高考介绍
  8. 计算机论文的主要研究方法有哪些,9大实用的论文研究方法盘点
  9. 视频压缩软件如何下载
  10. 【AI视野·今日CV 计算机视觉论文速览 第155期】Fri, 6 Sep 2019