zoukankan      html  css  js  c++  java
  • (001)Nginx简介

      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服务、动静分离的静态服务处理时,性能要比其他服务器高。

      

  • 相关阅读:
    Linux初级知识_04 -- 目录结构与目录管理
    查找无限整数序列的第n位1,2,3,4,5,6,7,8,9,10,11,...
    谷歌面试题:在半径为1的圆中随机选取一点
    FtpClient 调用storeFile 抛出 java.net.SocketException异常
    CountDownLatch 使用
    软件版本号比较 java工具类
    pcm文件转wav C语言
    unimrcp更改安装目录
    xpath学习记录
    jackson 实体转json 为NULL或者为空不参加序列化
  • 原文地址:https://www.cnblogs.com/javasl/p/12802415.html
Copyright © 2011-2022 走看看