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

      

  • 相关阅读:
    关于js计算非等宽字体宽度的方法
    [NodeJs系列]聊一聊BOM
    Vue.js路由管理器 Vue Router
    vue 实践技巧合集
    微任务、宏任务与Event-Loop
    事件循环(EventLoop)的学习总结
    Cookie、Session和LocalStorage
    MySQL 树形结构 根据指定节点 获取其所在全路径节点序列
    MySQL 树形结构 根据指定节点 获取其所有父节点序列
    MySQL 创建函数报错 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators
  • 原文地址:https://www.cnblogs.com/javasl/p/12802415.html
Copyright © 2011-2022 走看看