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

(001)Nginx简介

时间:2020-05-01 13:03:47      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:apache   通知   准备   响应   描述符   http服务   函数   最大连接数   唤醒   

  1、Nginx是什么:

  Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。

  2、常见的HTTP服务:

  HTTPD(Apache基金会);IIS(微软);GWS(Google),目前Nginx市场占有率越来越大。

  3、Nginx优势:IO多路复用;轻量级;CPU亲和;sendfile工作机制

  (1)IO多路复用

  IO复用:多个请求通过Socket转化成多个线程,由每个线程处理每个请求。消耗资源多。

  IO多路复用:对于操作系统内核而言,IO多路复用其实就是要完成操作系统的IO的请求,对于IO文件的请求,当一个IO流要进行对应的文件处理的时候,要获取一组文件的描述符,当文件描述符还没有就绪时,那么它等待,直到描述符一旦就绪,马上上报系统通知的一个机制,告诉应用程序我已经准备就绪了,你可以来操作了,这种方式就是IO多路复用的方式,所以有了这种系统内部通知的方式,处理起来性能就会非常高效。多个描述符的IO操作都能在一个线程内并发交替地顺序完成,这就叫IO多路复用,这里的“复用”指的是复用同一个线程。

  Linux下IO多路复用内核的模型:select、poll、epoll

  IO多路复用就是内核态对于IO请求的时候主动发送所需要处理的文件对象,就绪时会发送对应的文件可用信息给应用端,应用端在FD没有就绪之前是阻塞的,即阻塞socket请求,应用端也会维护FD列表。

  最早出现的是select模式,当内核态发送可用的文件对象,FD就绪后整个应用端采用select模式一直不断遍历所维护的FD文件描述符列表,以等到唤醒对应分进程去完成对应的数据拷贝,在这个过程中,select模型采用的是线型遍历的方式,这种方式会不断遍历队列里的内容,从而效率低下。

  select模型缺点:能够监视文件描述符的数量存在最大限制;线程扫描效率低下。

   2.6内核以后出现了epoll模型,有以下优点:

  每当FD就绪,采用系统的回调函数直接将FD放入对应的就绪列表,效率更高;没有最大连接数限制。

  (2)轻量级

  Nginx是轻量级web服务,功能模块少;代码模块化。

  (3)CPU亲和

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

  (4)sendfile工作机制

  Nginx在处理静态文件的效率高,因为Nginx采用sendfile工作机制。原来的http Server服务,请求一个文件的时候,要经过操作系统的内核空间和用户空间,最终到达socket,通过socket再传递response给用户,对于操作系统而言从内核空间到用户空间,要经过多次的切换。静态文件不需要经过用户空间的逻辑性处理,可以直接通过内核空间传输。sendfile利用到了这种模式,Linux2.2后出来的零拷贝传输模式,文件的传输只通过内核空间传递给socket,响应给用户。Nginx在CDN服务、动静分离的静态服务处理时,性能要比其他服务器高。

  

 

(001)Nginx简介

标签:apache   通知   准备   响应   描述符   http服务   函数   最大连接数   唤醒   

原文地址:https://www.cnblogs.com/javasl/p/12802415.html

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