Nginx架构

2016-08-14 Kevin 更多博文 » 博客 » GitHub »

Nginx

原文链接 https://kevindiamen.github.io/nginx/2016/08/14/nginx%E6%9E%B6%E6%9E%84%E5%88%9D%E7%AA%A5.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


Nginx 学习笔记之Nginx架构

Nginx的多进程模式

nginx在启动后,会有一个master进程和多个worker进程.master进程的主要作用是来管理worker进程 包含:接受来自外界的信号 向各worker进程发送信号,监控worker进程的运行状态,当worker进程异常退出后会自动重启worker进程,而网络事件是由worker进程来处理, 每个worker进程是对等的他们同等竞争来自客户端的请求,每个进程是相互独立,一个请求只能在一个worker处理,每个worker互相不影响, 每个worker进程数是可以配置的,一般都是设置与主机cpu核数一致(如2核 worker就设置2 如果设置大于cpu核数 会造成进程上线文切换 这样很浪费资源)

Nginx的优点

  • 对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销
  • nginx采用了异步非阻塞的方式来处理请求 不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级
  • 在24G内存的机器上,处理的并发请求数达到过200万

Nginx优化

  • 当客户端的一次访问,需要多次访问同一个server时,打开keepalive的优势非常大,比如图片服务器,通常一个网页会包含很多个图片。打开keepalive也会大量减少time-wait的数量