Nginx 所使用的 epoll 模型是什么?
对于 Nginx,相信有过 Web 服务部署经验的同学都不陌生,它有以下特点:
是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
Nginx 相较于 Apache 具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。
阿里面试题 | Nginx 所使用的 epoll 模型是什么?
Nginx 目前部署量逐渐增加,大多数运维人员多多少少都懂点 Nginx,但是真正其明白原理的可能少之又少,在许多面试中可能就 Nginx 会涉及一些实现层面的问题。比如一道阿里的面试题是:说说看 Nginx 所使用的 epoll 模型是什么?
错误回答:Nginx 相比较其他服务器来说就是快,高并发,快速响应,因为用了 epoll…
所以 epoll 以及一般可以同时见到的 select 或者 poll 分别是什么呢?
三个都是 IO 多路复用的机制,可以监视多个描述符的读 / 写等事件,一旦某个描述符就绪(一般是读或者写事件发生了),就能够将发生的事件通知给关心的应用程序去处理该事件。
然而为了区分不同类型的事物,我们有了:
普通文件
目录文件
链接文件
设备文件
其中文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其值是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行 I/O 操作的系统调用都通过文件描述符