一、简介
nginx是一款非常受欢迎的软件,具备高性能、模块化可定制的良好特性。之前写了一篇nginx的http模块分析的文章,主要对http处理模块进行了分析讲解,同时也涉及了nginx模块化的内容。至于nginx高性能的原因,希望能够在在这篇文章中就自己对于这方面的理解给大家分享一下。
nginx的event处理模型包含两个方面:高效的IO处理函数,事件的异步处理(可选的线程池)。
二、IO复用函数
nginx中包含epoll、poll、select、devpoll、kqueue、iocp等不同的IO处理函数。下面就常见的epoll、poll、select来做简单的分析
select | poll | epoll | |
fd数量 | 用fd_set类型来存储fd,每个fd占一位,fd_set在linux系统中默认1024位,所以select最多支持1024个fd(可以通过修改FD_SETSIZE来增加) | 采用pollfd结构体来存储fd,因此支持的最大fd数目跟系统内存有关(支持存储多少个) | 采用epoll_event存储,因此也只与内存有关 |
通知方式 |
延伸阅读
我想了解如何学习 |