Nginx学习-初步理解

来源:互联网 发布:香港网络歌手小背心 编辑:程序博客网 时间:2024/06/07 11:51

请求方式

  • Nginx是一款高性能的web服务器,能够同时处理大量的并发请求,主要是得益于Nginx的master-worker进程模式和异步机制。
    • master-worker模式
      1. nignx服务器对于接收到的每一个请求,都会有主进程master生成一个工作进程(worker process)处理。工作进程读取到这个客户端请求事件后,调用后端的I/O进行处理。
      2. 对于worker的进程数量,肯定不是越多越好。因为进程太多,会引发CPU的切换和调度,这样会浪费资源。通常情况下,worker进程的数量与服务器CPU的核数相等。这样做的好处,可以避免过多的worker进程竞争CPU资源。
      3. worker进程之间是相互独立的,这样设计就是避免了去竞争同一把锁的性能开销。同时一个进程异常退出之后,不影响其他进程正常工作。
    • 异步非阻塞
      1. worker 进程接收到客户端请求后,直接调用I/O处理,如果不能立即得到结果,就去处理其他事情。I/O处理完成后,会通知worker进程,该worker进程得到通知,暂时挂起当前处理的事物去响应客户端。

事件驱动

  1. Nignx事件驱动模型主要分为事件收集器,事件发送器,事件处理器三大部分。其中事件收集器读取到worker的各种I/O请求后,交给事件发送器处理,事件发送器将读取到的请求发送给事件处理器进行处理。
  2. 事件处理器是真正负责各种I/O事件的,事件处理器采用多路复用模式设计。
  3. 主要模型关系如下:
    事件驱动模型

    请求原理

    1. nginx采用master-worker进程模式工作,即一个master进程,多个worker子进程。对于客户端发送过来的请求client-request,只能由一个worker进程处理,则多个worker进程是如何争夺客户端的client-request请求。
      这里写图片描述
  4. Nginx服务器启动后,master进程创建listen的socket文件描述符,即listenfd。然后调用fork()函数创建子进程worker process。worker进程在读取客户端请求前,需要先获取master进程中的accept_mutex互斥锁,只有获得accept_mutex锁的worker进程才能注册listenfd事件。即通过调用accept方法接收client的请求,解析请求,处理请求等。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 听了高频率声音怎么办 qq音乐签到没了怎么办 手机qq音乐不能播放怎么办 台式电脑放歌没有声音怎么办 微信图片上传大愎怎么办 行车记录仪内存卡丢了怎么办 投资项目失败lp的钱怎么办 无线网无ip分配怎么办 为什么电脑的暴风影音打不开怎么办 电枪充电板进水怎么办 捡到一颗子弹该怎么办 防弹衣只保护身体那手臂怎么办? 被子被宝宝尿湿怎么办 眼睛被子弹打了怎么办 gta5买了2套衣服怎么办 gta5车被摧毁了怎么办 gta5车被损坏了怎么办 头盔玻璃磨花了怎么办 浇花喷水壶坏了怎么办 电力专用光缆撞了怎么办 国防电缆挖断了怎么办 国防光缆挖断了怎么办 房门前乱挂光纤线影响住户怎么办 挂断低于限高的光缆怎么办 开大车挂住光缆怎么办 风把树枝挂断压到车该怎么办 货车柴油冻住了怎么办 尖头鞋老是折尖怎么办 打 氟氯西林疼怎么办 多余的十字绣线怎么办 硅胶类的东西沾到蓝药水怎么办? ph计斜率不到90怎么办 ph计斜率低于90怎么办 顾客说衣服起球怎么办 买的手机壳太滑怎么办 硅胶手机壳太滑怎么办 磨砂手机壳太滑怎么办 被热胶棒烫了怎么办 车钢垫子次了怎么办 【图】机组主轴密封漏水怎么办? 孕妇吃了好多杏怎么办