码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx的介绍

时间:2019-01-14 15:06:39      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:复用   方式   升级   连接   限制   程序   bsd   活跃   center   

Nginx的介绍

制作人:全心全意

I/O模型介绍

Select:Linux实现对应,I/O复用模型,BSD4.2最早实现

Poll:Linux实现,对应I/O复用模型,System V unix最早实现

Epoll:Linux实现,对应I/O复用模型,具有信号驱动I/O模型的某些特性

 

实现机制

  select poll epoll
操作方式 遍历 遍历 回调
底层实现 数组 链表 哈希表
IO效率 每次调用进行线性遍历,时间复杂度O(n) 每次调用进行线性遍历,时间复杂度O(n) 事件通知方式,每当fd就绪,系统注册的回调函数就会被调用,时间复杂度O(1)
最大连接数 1024(x86)或2048(x64) 无上限 无上限
fd拷贝 每次调用select,都需要将fd集合从用户态拷贝到内核 每次调用poll,都需要将fd集合从用户态拷贝到内核 调用时拷贝进内核并保存,之后每次epoll_wait不拷贝

 

epoll的介绍

说明:

在Linux2.6内核中提出的select和poll的增强版本

支持水平触发LT和边缘触发ET,最大的特点在于边缘触发,它只告诉进程哪些fd刚刚变为就绪态,并且只会通知一次

使用”事件“的就绪通知方式,通过epoll_ctl注册fd,一旦该fd就绪,内核就会采用类似callback的回调机制来激活该fd,epoll_wait便可以收到通知

优点:

没有最大并发连接的限制:能打开的FD的上限远大于1024(1G的内存能监听约10万个端口)

效率提升:非轮询方式,不会随着FD数目的增加而效率降低;只有活跃可用的FD才会调用callback函数,即epoll最大的优点就在于它只管理”活跃“的连接,而跟连接总数无关

内存拷贝:利用mmap加速与内核空间的消息传递;即epoll使用mmap减少复制开销

 

nginx的程序架构

master/worker结构

一个master进程:负责加载和分析配置文件、管理worker进程、平滑升级

一个或多个worker进程:处理并响应用户请求

缓存相关的进程:

  cache loader:装载缓存对象

  cache manager:管理缓存对象

 

nginx模块

nginx高度模块化,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载

模块的分类:

  核心模块:core module

  标准模块:

    HTTP模块:ngx_http_*

      HTTP Core modules 默认功能

      HTTP Optional modules 需编译时指定

    Mail模块:ngx_mail_*

    Stream模块:ngx_stream_*

  第三方模块

 

 

 

 

 

 

 

 

Nginx的介绍

标签:复用   方式   升级   连接   限制   程序   bsd   活跃   center   

原文地址:https://www.cnblogs.com/zhangquan-yw/p/10265633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!