nginx的原理
一. nginx基本介绍 Nginx特性: Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 1、nginx高并发原理( 多进程+epoll实现高并发 ) Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。 每个子进程只有一个线程,采用的 IO多路复用模型epoll,实现高并发。 2、epoll能实现高并发原理 epoll() 中内核则维护一个链表,epoll_wait 方法可以获取到链表长度,不为0就知道文件描述符准备好了。 在内核实现中 epoll 是根据每个 sockfd 上面的与设备驱动程序建立起来的回调函数实现的。 某个 sockfd 上的事件发生时,与它对应的回调函数就会被调用,来把这个 sockfd 加入链表,其他处于“空闲的”状态的则不会。 epoll上面链表中获取文件描述,这里使用内存映射(mmap)技术, 避免了复制大量文件描述符带来的开销 内存映射(mmap):内存映射文件,是由一个文件到一块内存的映射,将不必再对文件执行I/O操作