epoll和 select poll 都是做I/O多路复用的。

区别在于:

epoll较灵活,如果有一百万个链接状态同时保持,但是在某个时刻,只有几百个链接是活跃的。epoll的处理是通过epoll_create()创建对象,epoll_ctl()收集所有的套接字添加到epoll对象,epoll_wait()收集所有发生事件也就是所谓的活跃的链接,并收集到一个List链表中,这样只需要遍历这些List链表里的数据,而不用遍历一百万个链接。 而后者select poll则是每次收集事件时,将这一百万个链接都传给操作系统,再由操作系统内核上判断某些链接产生了事件,造成了巨大的资源浪费(大批量的不同态内存复制)。

为什么epoll效率比较高:

epoll 在epoll_create 时,就已经建立好了一个file节点。创建epoll对象, 同时,在内核cache里建立了一个红黑树,用于存储后续epoll_ctl传来的socket连接。再同时,又建立了一个list链表,用于存储准备就绪的事件。 等到epoll_wait()调用的时候,只需要观察list链表里有没有数据就可以,有数据就返回,没数据就sleep。等到timeout后,及时没数据,也返回了。所以epoll_wait会非常高效

Nginx之epoll和select poll的更多相关文章

  1. 知识联结梳理 : I/O多路复用、EPOLL(SELECT/POLL)、NIO、Event-driven、Reactor模式

    为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平. I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题.它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数, ...

  2. 【转载】epoll与select/poll的区别总结

    因为这道题目经常被问到.干脆总结一下,免得遗漏了. 参考文章:http://www.cnblogs.com/qiaoconglovelife/p/5735936.html 1 本质上都是同步I/O 三 ...

  3. select,poll,epoll的归纳总结区分

    Select.Poll与Epoll比较 以下资料都是来自网上搜集整理.引用源详见文章末尾. 1 Select.Poll与Epoll简介 Select select本质上是通过设置或者检查存放fd标志位 ...

  4. Linux select/poll和epoll实现机制对比

    关于这个话题,网上已经介绍的比较多,这里只是以流程图形式做一个简单明了的对比,方便区分. 一.select/poll实现机制 特点: 1.select/poll每次都需要重复传递全部的监听fd进来,涉 ...

  5. select poll epoll Linux高并发网络编程模型

    0 发展历程 同步阻塞迭代模型-->多进程并发模型-->多线程并发模型-->select-->poll-->epoll-->... 1 同步阻塞迭代模型 bind( ...

  6. Linux内核中网络数据包的接收-第二部分 select/poll/epoll

    和前面文章的第一部分一样,这些文字是为了帮别人或者自己理清思路的.而不是所谓的源代码分析.想分析源代码的,还是直接debug源代码最好,看不论什么文档以及书都是下策. 因此这类帮人理清思路的文章尽可能 ...

  7. select,poll.epoll区别于联系

    select,poll,epoll都是IO多路复用中的模型.再介绍他们特点时,先来看看多路复用的 模型. 同其他IO的不同的是,IO多路复用一次可以等多个文件描述符.大大提高了等待数据准备好的时间的效 ...

  8. 【Nginx】epoll及内核源码详解

    内核源码: https://www.nowcoder.com/discuss/26226?type=0&order=0&pos=21&page=1 epoll流程: 首先调用e ...

  9. [转载] Linux下多路复用IO接口 epoll select poll 的区别

    原地址:http://bbs.linuxpk.com/thread-43628-1-1.html 废话不多说,一下是本人学习nginx 的时候总结的一些资料,比较乱,但看完后细细揣摩一下应该就弄明白区 ...

随机推荐

  1. jmeter用Stepping Thread Group 递增并发数

    jmeter安装插件Stepping Thread Group 如图所示设置的时候,本以为是每2秒 按 1 2 3 4 递增的,总共请求应该是10个,可是运行后却请求了几十个. 这个是有关线程数是否就 ...

  2. P1091 N-自守数

    1091 N-自守数 (15分)   如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守 ...

  3. Adobe Illustrator CC 2017安装方法

    1.下载软件地址 2017破解版32位64位中文版下载[百度网盘资源地址]:https://pan.baidu.com/s/13BsU8CfsLB6OXr7SkRFzCg 注意:使用之前请关闭杀毒软件 ...

  4. nested exception is javax.management.InstanceAlreadyExistsException: webservice:name=statFilter,type=StatFilter

    Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [ ...

  5. Spring的JDBC的使用(配置和CRUD)

    导包: Spring的JDBC模板的使用 一.默认连接池 创建数据库 create database spring4; use spring4; create table account(id int ...

  6. 040、Java中逻辑运算之短路与运算“&&”

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  7. 009.Delphi插件之QPlugins,服务的热插拔

    这个DEMO用来演示服务的替换,用起来总是怪怪的感觉,效果图如下 代码如下 unit Frm_Main; interface uses Winapi.Windows, Winapi.Messages, ...

  8. 项目上线后,遇到IE浏览器不显示大部分组件的问题

    document.addEventListener('touchmove',(evt)=>{ }) 以上是ES6 语法,箭头函数,当然在IE下是不行的啦. 所以改为:ES5语法 document ...

  9. c# copydata 消息

    using PublicCode; using System; using System.Collections.Generic; using System.ComponentModel; using ...

  10. lamp-module

    要求:    (1) 三者分离于两台主机: (2) 一个虚拟主机用于提供phpMyAdmin:另一个虚拟主机用于提供wordpress: (3) xcache (4) 为phpMyAdmin提供htt ...