Nginx的介绍

Posted 全心全意_运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx的介绍相关的知识,希望对你有一定的参考价值。

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的介绍的主要内容,如果未能解决你的问题,请参考以下文章

四十LNMP架构介绍MySQL安装PHP安装Nginx介绍

LNMP架构结介绍,MySQL和PHP的安装以及Nginx介绍

介绍+安装Nginx的介绍和安装详解

Nginx介绍

LNMP架构介绍 MySQL安装 PHP安装 Nginx介绍

nginx介绍