nginx 介绍及安装 | 学习笔记(二)

简介: 快速学习nginx 介绍及安装。

开发者学堂课程【Linux Web服务器Nginx搭建与配置nginx 介绍及安装学习笔记,与课程紧密联系,让用户快速学习知识.

课程地址:https://developer.aliyun.com/learning/course/579/detail/7987


nginx 介绍及安装


内容介绍

一、I/O 模型

二、Nginx 介绍


一、I/O 模型

(7) 信号驱动 IO 模型

具有更多的异步特性,就是调用者不需要主动问被调用者,比如当磁盘文件读取到内核当中时,数据还未得到,但进程仍可继续执行,或者响应其他用户的请求,直到磁盘文件读取到内核当中后,将数据从内核拷贝到用户空间中,但这个过程中需要等待,换句话说就是有一部分实现了异步,一部分仍是同步,意味着信号驱动IO模型将数据分成了一半阻塞不阻塞状态,效率提高了不少,因为将磁盘文件拷贝到内核空间上是最费时间的,而信号驱动IO模型可以将这时间自由分配。

信号驱动 IO : signal-driven I/O

用户进程可以通过 sigaction 系统调用注册个信号处理程序,然后主程序可以继续向下执行,当有IO操作准备就绪时,由内核通知触发一个 SIGIO 信号处理程序执行,然后将用户进程所需要的数据从内核空间拷贝到用户空间

此模型的优势在于等待数据报到达期间进程不被阻塞。用户主程序可以继续执行,只要等待来自信号处理函数的通知

该模型并不常用

image.png

(8)异步 IO 模型

当用户发请求,内核得到请求从磁盘复制到内核,从内核复制到用户空间,用户程序一直在执行,没有堵塞,一直由内核复制数据,递交给应用程序。所以对于进程来讲很轻松,内核做的事更多一点,当然进程做的事越少,他的负担越小,就可以同时做更多的事。

image.png

(9)五种 I/O 模型

同步IO模型一直在阻塞,同步非阻塞模型不是完全非阻塞,只是前面的阶段磁盘拷贝到内核不阻塞,但又因为是同步的还是什么都干不了,因为不清楚做没做完,所以一直消耗资源在轮询。IO复用模型都是阻塞的,只不过在前面阶段阻塞在代理select上面,只是换个地方阻塞。而信号驱动模型,前面阶段不阻塞,可以做一些事情。异步IO模型是最理想的,不阻塞。如图越往左越阻塞,越往右越不阻塞。

image.png

(10)I/O 模型的具体实现

主要实现方式有以下几种:

  • Select : Linux 实现对应, I/O复用模型, BSD4.2 最早实现
  • Poll : Linux 实现,对应I/O复用模型, System V unix 最早实现
  • Epoll : Linux 实现,对应I/O复用模型,具有信号驱动I/O模型的某些特性
  • Kqueue : FreeBSD 实现,对应I/O复用模型,具有信号驱动I/O模型某些特性
  • /dev/poll : SUN 的 Solaris 实现,对应I/O复用模型,具有信号驱动I/O模型的某些特性
  • Iocp Windows 实现 ,对应第5种(异步I/O )模型

(11)select/poll/epoll 区别

epoll :在Linux 2.6内核中提出的 select 和 poll 的增强版本

  • 支持水平触发 LT 和边缘触发 ET ,最大的特点在于边缘触发,它只告诉进程哪fd 刚刚变为就需态,并且只会通知一次
  • 使用"事件”的就绪通知方式,通过 epoll_ ctl 注册 fd ,一旦该 fd 就绪,内核就会采用类似 callback 的回调机制来激活该 fd , epoll_ wait 便可以收到通知

优点:

  • 没有最大并发连接的限制:能打开的 FD 的上限远大于1024(1G的内存能监听10万个端口)
  • 效率提升:非轮询的方式,不会随着 FD 数目的增加而效率下降;只有活跃可用的 FD 才会调用callback函数,即 epoll 最大的优点就在于它只管理“活跃"的连接,而跟连接总数无关
  • 内存拷贝,利用 mmap(Memory Mapping)加速与内核空间的消息传递;即 epoll 使用 mmap 减少复制开销

image.png

注:mmap 内存映射

内存映射

 nginx 访问磁盘文件,一般情况要发指令给内核,内核跑到磁盘读取数据,数据在磁盘上存放是文件数组方式组织的,要先从磁盘找节点表 inode,通过目录一层层找到文件 data,相对效率不高。

所以可以在磁盘划一块空间就是这个文件,然后把这个文件映射到内存空间,假设磁盘是16M,则内存也是16M让两块区间一个字节个字节对应,将来要访问文件时就可以直接访问内存里的这块空间提高了效率,如下图,

image.png


二、Nginx 介绍

  • NginxengineX,2002年,开源,商业版
  • NGINX是免费,开源,高性能的 HTTP 和反向代理服务器,邮件代理服务器,通TCP/UDP 代理服务器
  • 解决 C10K 问题( 10K Connections )
  • 官网: http://nginx.org
  • 二次开发版:

Tengine, OpenResty (章亦春)

相关文章
|
30天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
134 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
1月前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
27天前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
63 0
Mac os 安装 nginx 教程(success)
|
1月前
|
Ubuntu 搜索推荐 应用服务中间件
Nginx安装与使用
Nginx安装与使用
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx安装及配置详解
Nginx安装及配置详解
|
1月前
|
应用服务中间件 程序员 开发工具
mac下安装nginx
mac下安装nginx
|
1月前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
1月前
|
Ubuntu Unix 应用服务中间件
Ubuntu16.04.1 安装Nginx
Ubuntu16.04.1 安装Nginx
|
1月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
179 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
网络协议 应用服务中间件 Linux
Linux安装nginx
Linux安装nginx