Nginx与Apache的I/O性能差距源于他们采用不同的I/O模型 Apache - select模型 Nginx - epoll模型 特点对比 select模型 (1)最大并发连接数限制,一个进程所打开的 FD (文件描述符)是有限制的,由 FD_SETSIZE 设置,默认值是 1024/2048 ,因此 Select 模型的最大并发数就被限制了 (2)效率问题,select 每次调用都会线性扫描全部的 FD 集合,这样效率就会呈现线性下降,所以,如果把 FD_SETSIZE 改大,效率会直接降低 (3)内核 / 用户空间 内存拷贝问题,如何让内核把 FD 消息通知给用户空间呢?在这个问题上 select 采取了内存拷贝方法 (4)产生阻塞 epoll模型 (1)最大并发连接的限制,上限是最大可以打开文件的数目,这个数字一般远大于 2048, 这个数字和系统内存关系很大 ,具体数目可以 cat /proc/sys/fs/file-max 察看 (2)效率提升,Epoll 最大的优点就在于它只管“活跃”的连接 ,而跟连接总数无关 (3)内存拷贝,Epoll 在这点上使用了“共享内存 ”,内存拷贝过程也省略了 (4)非阻塞