一、Nginx服务器处理请求
(1)Single 模型
单进程方式
(2)Master-Worker模型
Master-Slave模型
二、Nginx服务器的事件处理机制
事件驱动模型:事件收集器;事件发送器;事件处理器组成
系统架构:预先设计一个事件循环形成的程序,循环不断检查目前要处理的事件信息
然后使用“事件发送器”传送给”事件处理器“。事件处理器通常运用虚函数进制来实现。
Nginx事件驱动模型
事件驱动处理库又被称为多路IO复用:select/poll/epoll
select和poll的区别:
select需要为读事件,写事件和异常事件分别创建一个描述符集合,因此
在最后轮询的时候,需要分别轮询这三个集合。
poll只需要创建一个集合,在每个描述符对应的结构上分别设置了读事件,写事件或者异常事件,
最后轮询的时候,可以同时检查这三种事件是否发生,可以说poll是select的优化实现。
epoll实现:
epoll通过相关调用通知内核创建一个有N个描述符的事件列表;然后,给这些描述符设置所关注的事件,
并把它添加到内核的事件列表中。
select/poll和epoll的区别:
(1)进程支持的打开的描述符连接数目不同
(2)
FD剧增后带来的IO效率问题,一个需要线性遍历;一个不需要(回调通知)
(3)
消息传递方式,一个需要拷贝,一个使用了共享内存方式
三、Nginx服务器架构
主进程:主要进行Nginx配置文件的解析,数据结构初始化,模块配置和注册,信号处理,网络监听生成,工作进程生成和管理等工作。
工作进程:主要进行进程初始化,模块调用和请求处理等工作,是Nginx服务器提供服务的主体。
缓存索引重建及管理进程:数据缓存和更新