1、高性能:
a、内存池的设计,为一个多级链表结构,本身不负责内存的回收,减少内存碎片,提高内存的利用率,将多次向操作系统申请内存压缩为一次,减少向操作系统申请内存的次数,提高cpu资源的利用;
b、基于事件的master-worker异步处理。处理事件的机制是由事件分发进程加载事件处理模块来完成与传统将事件提交给handle-thread来处理的方式相比,减少了进程(线程)间的切换,从而降低了请求响应延迟的时间;
c、进程间通信采用自选锁(spinlock)即非睡眠锁,减少进程的阻塞等待时间,每个进程的epoll上瞬间会有成千上万个tcp连接,进程不能随便阻塞让出cpu,即使没有获取到锁,他仍然可以去做其他的事情。
d、请求的多阶段异步处理,减少了进程的休眠时间,让进程全力运转,同时进程数目不是很大,减少了内核的开销,提高了网络性能。
2、高可靠性。
worker进程一旦挂了,会向master进程发送CHILD信号,置ngx_reap标识,master进程会对worker进程监控,发现终止的进程会对其进行重启等操作。
3、高伸缩性.
nginx中存在ngx_modules数组,该数组存放的是各个模块,nginx在启动时会加载这些模块,用户可以根据需要动态添加或删除这些模块。
4、高修改性.
nginx提供了配置文件,对一些重要信息进行设置,如侦听端口号,worker进程的个数等,在执行过程中,ngx_reconfigure标志位进行重新生成工作进程。
原文地址:http://blog.csdn.net/zcc_0015/article/details/38095163