Nginx为什么如此受欢迎

对比Apache和Lightted

Apache特点是安全稳定、功能强大。

Nginx资源占用少、并发能力强、功能强大、扩展灵活。

Lightted设计的初衷就是快速、安全、灵活,它的资源占用率很低,安全性较差,在各项性能指标对比中略逊于前两款服务器。

 

为什么抗高并发能力强

nginx是多进程异步,apache是多线程同步。

异步的好处是内存和cpu资源占用低,进程间相互独立,不共享资源,减少了锁和cpu上下文频繁切换的开销,每个进程可以同时处理多个请求,无须等待。多线程同步的特点是一个线程一次只能处理一个请求,且线程间需要加锁来维护独立性,并发高时,内存占用高,cpu上下文频繁切换开销大。

 

Nginx的工作原理

 

 Nginx服务器的进程模型有两种,Single模型和Master-Worker模型。由于Single模型是单进程的,性能较差,所以实际工作中不经常使用,实际工作中经常使用的是Master-Worker模型。

 Nginx启动时会创建一个Master进程和多个Worker进程,Master进程负责创建和管理Worker进程,除此之外它还会负责配置文件的解析、模块注册、数据结构初始化等工作。Worker进程主要负责接收和处理客户端请求和模块的调用,一个Woker进程可以处理多个请求,但一个请求只能被一个Woker进程处理。

被worker进程接收到的请求,会被自动识别和分类,譬如读、写、异常处理等,系统会自动产生相应的IO事件,并存储在事件队列中,这些事件会在适当的时候被分发给相应的模块,然后被消费掉。

这样带来的好处是,发送方发送请求后不用等待接收方的响应,可以继续其他工作;接收方在处理请求时的IO操作如果不能马上有结果也不用等待,可以返回去做其他事情,当IO操作完成后,系统会将完成状态和结果通知接收方,接收方得到通知后再对发送方进行响应。

 

主要功能

http服务器

反向代理服务器

负载均衡

缓存

限流