标签: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服务、动静分离的静态服务处理时,性能要比其他服务器高。
标签:apache 通知 准备 响应 描述符 http服务 函数 最大连接数 唤醒
原文地址:https://www.cnblogs.com/javasl/p/12802415.html