1epoll多路复用

2.master worker进程模型:可以允许做平滑的配置重启,并且不会断开与客户端的链接

3.协程机制    :非阻塞进程的机制

最开始开发人员使用的是bio阻塞shi进程模型,socket.write所有的字节流都input完后才对应的client、才会返回

于是有了linux的select模型,变更轮训查找,只要有变化,就会被唤醒,缺点:每次轮训都遍历,效率很低。而且理论上限只能监听1024个请求

epoll模型:在监听的时候有回掉函数,那个变化就直接回掉函数执行,而且上限很高java的NIO模型就是借用了linux的模型,NIO也有一个select模型,那NIO为什么不使用epoll多路呢?linux内核2.6以上会把select以epoll的模式去运行,若是2.6以前的版本就不会。

上图,master是可以管理worker的进程空间的,worker用来处理客户端链接的,当启动master进程的时候,就会在master上启动一个socket的文件举鼎,然后这个文件又会监听在80端口上,这时候就会启动epoll的多路复用模型,当client发起请求就会有一个tcpip的过程,建立三次握手,会向80端口发起socket conect的操作,这时候epoll模型就会产生回掉,

但是这时候的master是不处理connect的请求的,他会让对应的woker去处理,nginx在里面搞了一个互斥锁,因为master和woker都会共享内存,三个worker都会去抢占,因为是在内存上的,速度很快,谁先抢占到就是谁去调用完成三次握手。一旦某一个worker抢占到了,以后这条道路就是都是worker来处理了。worker会讲这个请求扔到epoll里,

那master的作用:只用来处理管理者的命令,以及某个worker死掉的话,他会接管权限,并且new出一个新的worker,

三次握手:首先服务端80端口监听,然后client发起connect操作到80端口,然后80端口upset来完成三次握手的建立链接

2.sbin/nginx -s reload 重启之后,worker的端口号会变,master的不会变,因为master不能挂,挂了整个nginx就废了。

执行这条命令后,master会将所有的socket进行收回,然后重新生成worker去分配。

3.每个worker里只有一个线程,都是单线程的,为什么不使用多线程呢?

  首先,多线程就是为了防止单线程堵塞,造成效率问题。但是worker里的单线程是非阻塞的,只不过是调用socket的read和write,而且是在epoll中,速度是非常快的,不会造成堵塞,单线程反而更快,仅仅只是一份内核空间到用户的拷贝。

4. 协程是比内存更小的概念,依附于线程的内存模型,切换开销小,它遇到阻塞就会归还执行权,重点是无需加锁,它是串行的执行过程,lua就是基于协程的

5

转载于:https://www.cnblogs.com/gaoqiaoliangjie/p/11053934.html

niginx高性能原因相关推荐

  1. 源码解析Spring Boot2默认数据库连接池HikariCP(高性能原因分析)

    现在市面上的数据库连接池非常多,其中HikariCP被Sping Boot2选中为默认的数据库连接池,且体积仅有152kb 为何选择HikariCP? 高性能,可以PK掉其它所有连接池,这个原因就足够 ...

  2. 百度ID生成器高性能原因

    百度ID生成器可以达到百万TPS,为什么如此高性能? 1.消费未来时间 百度ID生成器也是基于雪花算法,雪花算法中最后12位用于自增序列,这决定了雪花算法只支持每秒生成最多4096个id,这在一些批量 ...

  3. Kafka高性能相关

    Kafka高性能相关 1 高性能原因 1.1 高效使用磁盘 (1)顺序写磁盘,顺序写磁盘性能高于随机写内存 (2)Append Only 数据不更新,无记录级的数据删除(只会整个segment删除) ...

  4. 面试官问我:什么是高并发下的请求合并?

    作者 | why技术 来源 | why技术(ID:hello_hi_why) 从一道面试题说起 ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍前段时间一个在深圳的,两年经验的小伙伴出去面试了一圈 ...

  5. 阿里技术协会(ATA)11月系列精选文集

    ATA--阿里巴巴技术协会(Alibaba Technology Association)--提倡社区型的"共享+共建"理念,特别鼓励集团技术工程师之间的交流和合作,以此促进技术发 ...

  6. Nginx 实战(一) 集群环境搭建

    Nginx是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器.一直纳闷这个X是怎么来 ...

  7. Kafka 设计架构原理详细解析(超详细图解)

    什么是Kafka? Apache Kafka是一个开放源代码的分布式事件流平台,成千上万的公司使用它来实现高性 能数据管道,流分析,数据集成和关键任务等相关的应用程序. Kafka的应用场景 构造实时 ...

  8. kafka常见问题及优化

    kafka常见问题及优化 一.消息丢失: 二.消息重复发送和重复消费 三.消息乱序 四.消息积压 五.消息回溯 六.延时队列 七.kafka事务 八.kafka高性能原因 一.消息丢失: 发送端: a ...

  9. Artemis架构解析

    目录 前言 1.Artemis Broker 1.1 外部工具与接口 1.1.1 命令行工具 1.1.2 RESTful API 1.1.3 JMX 1.1.4 管理控制页面 1.2 Artemis核 ...

最新文章

  1. 一次特殊的经历和迷茫-小米平板
  2. [转贴] C++内存管理检测工具 Valgrind
  3. 如何快速正确的安装 Ruby, Rails 运行环境
  4. asp.net core 集成 prometheus
  5. 丁丁打折网卷能用吗_超市货架上就能买到的好用护发素,平价好用,打折时可以多囤点...
  6. 开源TinyXML 最简单的新手教程
  7. HashMap之HashMap中hashSeed(hash种子)的作用分析
  8. hive 下载和导入数据 hive -e
  9. python人脸识别系统界面_人脸识别演示界面:python GUI--tkinter实战(1)
  10. TeamTalk 单服务端配置
  11. 数字未来,NFT未来,Game Farmer创始人胡烜峰在IGS上讲述FoxNFT和他的故事
  12. 优派 ELITE XG320Q、XG320U / UG 评测
  13. 「九省联考 2018」制胡窜 (SAM)(线段树合并)(分类讨论)
  14. 轻松解决夜神逍遥模拟器模拟器等模拟器无法连接问题
  15. 多功能频谱分析仪TFN RMT系列,满足您对频谱分析仪的多种幻想。
  16. vtk中的win32窗口
  17. 国外著名大学计算机教学考察随笔
  18. Altium Designer中的电路仿真
  19. 爬虫(一):爬虫的基础知识 ---通用爬虫和聚焦爬虫,http和https协议,常见的响应状态码
  20. 小i机器人用AI打造金融业认知智能企业

热门文章

  1. linux alias命令参数及用法详解--linux定义命令别名alias
  2. Putdb WebBuilder 6.5 正式版本发布
  3. 为何断点不停 Application_Start()方法
  4. Access数据库出现的0x80004005 Unspecified error问题
  5. 安卓 静态文件读取 staticFile
  6. java项目中使用的jar包出错怎么办
  7. 无需激活直接同步登入discuz,php代码(直接可用)
  8. Annotation 的第一个工程
  9. 设计模式(三) | 为别人做嫁衣---代理模式
  10. 能用条件注释改善的IE兼容问题