Nginx是一个开源且高性能、可靠的HTTP中间件和反向代理服务器,开源表示它的源代码是开放的,可以从官方网站下载源代码并进行二次开发,高性能指Nginx能够支持海量的并发请求,可靠说明Nginx运行起来是比较稳定的,Nginx的大致优点如下。
1、Nginx采用IO多路复用的 epoll模型,IO多路复用是指多个请求可以在一个线程内并发交替地顺序完成。IO多路复用的实现方式有select、 poll和epoll,Nginx使用的是epoll方式,相比select方式,它没有最大连接数的限制且当请求就绪时会采用系统的回调直接将请求放入就绪列表,相比select方式的线性遍历就绪列表来说效率会更高。
2、Nginx属于轻量级web服务器,只保留了httpd的核心功能模块代码,所以 Nginx相比httpd来说没有那么全的功能模块。其次,Nginx因为代码模块化的原因比较容易读,利于开发人员的二次改进,淘宝的Tengine服务器就是基于Nginx进行开发的。
3、CPU亲和性,Nginx将每一个工作中的进程固定在一个CPU上执行,较少了进程在CPU中进行切换带来的损耗,从而有更好的工作性能。
4、采用sendfile的工作机制,静态文件只通过内核空间到达socket传输给用户而不需要经过用户空间进行逻辑处理,提高了传输效率。