在 Nginx 的初始化启动过程中,worker 工作进程会调用事件模块的 ngx_event_process_init 方法为每个监听套接字 ngx_listening_t 分配一个 ngx_connection_t 连接,并设置该连接上读事件的回调方法 handler 为 ngx_event_accept,同时将读事件挂载到 epoll 事件机制中等待监听套接字连接上的可读事件发生,到此,Nginx 就可以接收并处理来自客户端的请求。当监听套接字连接上的可读事件发生时,即该连接上有来自客户端发出的连接请...
分类:
Web程序 时间:
2015-01-31 09:26:29
阅读次数:
247
epoll - I/O event notification facility在linux的网络编程中,非常长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的优点在于它不会随着监听fd数目的增长而减少效率。由于...
分类:
其他好文 时间:
2015-01-30 19:00:35
阅读次数:
151
包含头文件:#include epoll的接口非常简单,一共就三个函数:1. int epoll_create(int size);创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。2.int epoll_ctl(int epfd, int op, int fd, struct...
分类:
其他好文 时间:
2015-01-30 06:37:11
阅读次数:
199
IOCP是windows下的一种异步IO通信模式(linux下面对应epoll,二者有区别--->http://www.cnblogs.com/uzhang/archive/2012/02/24/2365980.html)一样的socket的绑定通信的过程,不同的是并不对每一个用户请求单独开设一个线...
分类:
其他好文 时间:
2015-01-29 22:27:03
阅读次数:
254
??
什么是epoll
epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4)
is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。
...
分类:
其他好文 时间:
2015-01-28 16:01:27
阅读次数:
349
Linux 2.6内核中提高网络I/O性能的新方法-epoll I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。1、为什么select落后 首先,在Linux内核中,select所用到的FD_SET是有限的,即内核中有个参数__FD_SETSIZE定义了每个FD...
分类:
其他好文 时间:
2015-01-21 21:53:03
阅读次数:
233
select、poll、epoll都是IO多路复用的机制,但是他们的机制有很大的区别
1、select
select机制刚开始的时候,需要把fd_set从用户空间拷贝到内核空间,并且检测的fd数是有限制的,由FD_SETSIZE设置,一般是1024。
检测的时候,根据timeout,遍历fd_set表,把活跃的fd(可读写或者错误),拷贝到用户空间,
再在用户空间依次处理相关的fd。...
分类:
系统相关 时间:
2015-01-20 20:35:55
阅读次数:
1199
在写epoll回显服务器代码之前,可以先看看上一篇文章:select poll epoll三者之间的比较。最近在继续学习网络编程中的服务端编程中,了解到很多网游服务器是在IOMP(IO完成端口)框架下写的,但是这种方式只能在 Windows 下使用,奇了怪了,这么好的东西为什么不在Linux下也.....
分类:
其他好文 时间:
2015-01-19 22:17:52
阅读次数:
253
man epoll:NAME epoll - I/O event notification facilitySYNOPSIS #include DESCRIPTION The epoll API performs a similar task to poll(2)...
分类:
系统相关 时间:
2015-01-19 12:33:17
阅读次数:
282
本文介绍在 Linux 系统下基于 Nginx 的事件驱动框架以及不同类型事件驱动模块的管理的 epoll 事件驱动模块。...
分类:
其他好文 时间:
2015-01-18 18:38:52
阅读次数:
211