美文网首页
01.Nginx基本简述

01.Nginx基本简述

作者: 祁恩达 | 来源:发表于2019-10-03 18:16 被阅读0次

Nginx基本简述

Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。
开源: 直接获取源代码
高性能: 支持海量并发

常见的HTTP服务

1.HTTPD -> Apache基⾦会
2.IIS -> 微软
3.GWS -> Google
4.openrestry
5.tengline -> 淘宝基于Nginx开发

Nginx应⽤用场景

静态处理
反向代理
负载均衡
资源缓存

Nginx优秀特性

Nginx基于IO多路复用
IO复用解决的是并发性的问题,Socket作为复⽤。


image.png

IO复用(串行,产生阻塞)


image.png
IO复用(多线程, 消耗大)
image.png
IO多路复用(主动上报)
image.png

多个描述符的I/O操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路路复用,这里的 "复用"指的是复用同⼀个线程。
IO多路复用的实现方式有select、poll、Epool

什么是select
image.png

select缺点

1.能够监视文件描述符的数量存在最大限制
2.线性遍历扫描效率低下

epool模型

1.每当FD就绪,采用系统的回调函数之间将fd放入,效率更高
2.最大连接无限制

轻量级

1.功能模块少
2.代码模块化

CPU亲和(affinity)
将CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的 cache miss ,获得更好的性能。


image.png
sendfile

传统文件传输, 在实现上其实是比较复杂的, 其具体流程细节如下:

1.调用read函数,文件数据被复制到内核缓冲
2.read函数返回,文件数据从内核缓冲区复制到用户缓冲区
3.write函数调用,将文件数据从⽤用户缓冲区复制到内核与socket相关的缓冲区。
4.数据从socket缓冲区复制到相关协议引擎。
传统⽂文件传输数据实际上是经过了四次复制操作:
硬盘—>内核buf—>用户buf—>socket缓冲区(内核)—>协议引擎
也就是说传统的文件传输需要经过多次上下文的切换才能完成拷贝或读取, 效率不高。


image.png

sendfile文件传输是在内核中操作完成的, 函数直接在两个文件描述符之间传递数据, 从而避免了内核缓冲区数据和用户缓冲区数据之间的拷贝, 操作效率很高, 被称之为零拷贝。
1.系统调用sendfile函数通过 DMA 把硬盘数据拷⻉贝到 kernel buffer,
2.数据被 kernel 直接拷贝到另外一个与 socket 相关的 kernel buffer。
3.DMA把数据从kernel buffer直接拷贝给协议栈。
这里没有用户空间和内核空间之间的切换,在内核中直接完成了了从一个buffer到另一个buffer的拷贝。


image.png

相关文章

  • 01.Nginx基本简述

    Nginx基本简述 Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。开源: 直接获取源代码高性能: ...

  • 财政学[9035]

    1.简述财政的职能。 2.简述税收制度的基本要素。 3.简述区分公共物品与私人物品的基本标准。 4.简述税负转嫁与...

  • TensorFlow 快速上手详解

    TensorFlow 基本使用简述 一、概念简述 1、学习目标 使用图 (graph) 来表示计算任务. 在被称之...

  • 【MySQL】基本查询简述

    进行数据分析及挖掘,我们的目的是从数据库中抓取有用信息。 1. SELECT语句 MySQL的书写顺序为: MyS...

  • 01.Nginx环境搭建

    一、准备工作 安装环境 操作系统: Ubuntu 18.04 虚拟机:Virtual Box 服务器:CentOS...

  • SpringBoot:集成Shiro之INI认证篇

    前言 上一篇SpringBoot:集成Shiro之简述篇中,我们简述了Shiro的基本概念以及Shiro的内部流程...

  • Struts框架(1) - 基本简述

    概述 Struts就是基于mvc模式的框架!(struts其实也是servlet封装,提高开发效率!) Strut...

  • 简述草书基本特征

    草书是汉字的主要书体。草书的种类诸多,分别是草篆、草隶、章草、今草、狂草等。草书的主要特征突出地表现为书写的草率、...

  • 简述MarkDown编辑 基本语法

    H1 H2 H3 H4 H5 h6 单行代码引用:this is demo for code 多行代码引用: 无序...

  • 简述人体的基本结构

    人体基本上是一个由细胞组成的结构,它的存在是从受精卵开始,通过细胞的增值和分化而发育,随着细胞和细胞产生的物质...

网友评论

      本文标题:01.Nginx基本简述

      本文链接:https://www.haomeiwen.com/subject/svndpctx.html