Nginx源码分析-Epoll模块

原创 2010年12月11日 19:01:00

转载申明:本文可以任意转载,但需注明原文地址,谢谢!

 

Linux平台上,Nginx使用epoll完成事件驱动,实现高并发;本文将不对epoll本身进行介绍(网上一堆一堆的文章介绍epoll的原理及使用方法,甚至源码分析等),仅看一下Nginx是如何使用epoll的。

 

Nginx在epoll模块中定义了好几个函数,这些函数基本都是作为回调注册到事件抽象层的对应接口上,从而实现了事件驱动的具体化,我们看如下的一段代码:

 

 

这段代码就是epoll的相关函数注册到事件抽象层,这里所谓的事件抽象层在前面的博文中有提过,就是Nginx为了方便支持和开发具体的I/O模型,从而实现的一层抽象。代码后面的注释将功能说明得很详细了,本文就只重点关注ngx_epoll_init和ngx_epoll_process_events两个函数,其他几个函数就暂且忽略了。


 

ngx_epoll_init主要是完成epoll的相关初始化工作,代码分析如下:

 

epoll初始化工作没有想象中的复杂,和我们平时使用epoll都一样,下面看ngx_epoll_process_events,这个函数主要用来完成事件的等待并处理。

 

 

本文将关注的两个epoll函数也就这么一点代码了,但整个epoll还有添加事件和删除事件等的相关函数,代码都很简单,本文就不做具体的分析了。

 

写到此处的时候,我感觉epoll模块没有分析的足够详细,或者说是没有足够的理解作者的用意,如果你有更好的理解,希望能够告诉我。或许,随着后面的分析,能够逐渐的真正明白吧。

 

 

 

 

 

初步探索Nginx高并发原理

Nginx首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型。使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器。多进程的工作模式1、Nginx 在启动后,...
  • STFPHP
  • STFPHP
  • 2016-10-26 17:30:51
  • 7203

nginx多核配置 epoll 和延伸linux cpu查看

参考资料:http://www.cnblogs.com/funsion/p/4003495.html和http://www.1990y.com/nginx-worker-process-affinit...
  • god_for
  • god_for
  • 2015-04-08 18:14:13
  • 2474

《深入理解Nginx 模块开发与架构解析》笔记之epoll事件模块

epollLinux epollLinux epoll工作模式 水平触发LT 边缘触发ET       前者是默认的,可以处理阻塞和非阻塞套接字,后者只能处理非阻塞套接字。Linux epoll原理 ...
  • yzt33
  • yzt33
  • 2015-07-30 23:11:46
  • 808

Nginx学习之七-模块ngx_epoll_module详解(epoll机制在nginx中的实现)

本文结合实际代码介绍事件驱动模块接口与epoll用法是如何结合起来发挥作用的。Nginx中ngx_epoll_module模块基于epoll实现了Nginx的事件驱动。 模块定义(src/e...
  • xiajun07061225
  • xiajun07061225
  • 2013-07-05 11:30:50
  • 13510

Nginx事件驱动总结

其实最开始想要看nginx的源代码的初衷就是为了搞懂它的nginx的事件驱动到底是怎么回事。。。到现在为止nginx代码的大体结构部分已经看的差不多了,对它的事件驱动也算是有了一个较为全面的了解,终于...
  • chen_fly2011
  • chen_fly2011
  • 2017-02-21 17:06:11
  • 119

nginx事件模块之ngx_epoll_module源码分析

ngx_epoll_module是nginx众多事件模块的其中一个,它利用linux的epoll模型实现nginx事件框架所定义的事件模块接口。运行在linux系统上的nginx默认使用该模块作为事件...
  • qiuhui00
  • qiuhui00
  • 2018-02-09 15:10:15
  • 46

Nginx 源码阅读笔记8 epoll 模块

终于到事件模块了,只看了 epoll 模块,其中忽略了异步 IO 和 eventfd 的部分 那么首先是初始化部分,也就是ngx_epoll_init函数 epcf = ngx_event_g...
  • scnu20142005027
  • scnu20142005027
  • 2017-05-03 16:37:29
  • 496

Nginx 工作原理和优化、漏洞

1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(lo...
  • pangchengyong0724
  • pangchengyong0724
  • 2016-07-29 09:20:01
  • 199

进一步了解nginx工作原理

问题: 1.DNS解析是什么,简述步骤1,2。 2.简述如何与服务器建立TCP连接。 3.简述客户端与服务器传送数据。 4.Http协议与TCP之间的关系。 5.简述Http get请求过程...
  • Truong
  • Truong
  • 2015-11-21 15:32:42
  • 841

Nginx工作原理和优化、漏洞。

1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(loc...
  • hguisu
  • hguisu
  • 2013-05-16 11:04:53
  • 125721
收藏助手
不良信息举报
您举报文章:Nginx源码分析-Epoll模块
举报原因:
原因补充:

(最多只允许输入30个字)