Posted by:
努力记

努力记,通过记录,计划,让自己的努力可以触碰彩虹!

5,322

Nginx:原理概括

  • 2013-05-07
  • 暂无评论

Nginx是一款轻量级的Web服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like写一下发行(开源免费协议)。

其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中是最好的

目前中国大陆使用nginx的网站用户有:新浪、网易、腾讯,淘宝甚至在nginx的基础上开发了Tengine,添加了很多高级功能。

Nginx和Apache一样是模块化的,如同fastdfs和gridfs都有对应的Nginx的模块用于访问。

以下分析下Nginx为什么有这么好的并发性能:

对于网络I/O模型:

  • Nginx使用的是epoll(Linux 2.6内核)和kqueue(freebsd)模型(非阻塞)
  • Apache使用的是传统的select模型(阻塞)
  • 现在多数在Linux上的高并发服务程序基本使用的都是epoll模型,如:Squid、Memcached,实现了高并发的能力。

对于进程模型:

  1. Nginx使用的是非阻塞的请求方式,这点上就是基于事件驱动的原理
  2. 用单一线程轮询判断事件,不照成线程浪费,也无需进行多余的上下文切换
  3. 由worker进程处理多个真实的请求信息,并且一个请求只会在一个worker进程中被接受

nginx

事件处理:

  • Nginx是以事件驱动的方式编写,在这点上和现在的Node.js一样,这也是并发能力高的原因。
  • Nginx不支持CGI方式,只支持fastcgi方式,为了是避免程序的bug导致的进程问题影响性能

在这点上和PHP的目标是一致的目前5.3版本以上的php都内置了fastcgi服务器也就是php-fpm,自身管理php的进程,相辅相成

以上的3点是Nginx基础架构上实现高性能的原因,透过这些基础构架可以发现,目前为了实现互联网的高并发需求,各个软件都使用了大致相同的技术手段(不限具体算法),如果要实现一款高并发服务可以借鉴这些基础构架,以最小的代价得到较大的回报



back up ↑

无觅相关文章插件,快速提升流量