深入理解Nginx:(2)Nginx的配置之一


Nginx 拥有大量的官方和第三方模块,这些已有的模块可以帮助我们实现服务器上的很多功能,使用这些模块时,仅仅需要增加、修改一些配置项即可。因此,我们首先需要了解 Nginx 的运行方式和语法规则。

运行中的 Nginx 进程间的关系

一般情况下 Nginx 都是使用一个 master 进程来管理多个 worker 进程,而 worker 进程的数量通常与服务器上的 CPU 核心数相等。每一个 worker 进程都是繁忙的,它们在真正地提供互联网服务,master 进程则很 “清闲”,只负责监控管理 worker 进程。worker 进程之间通过共享内存、原子操作等一些进程间通信机制来实现负载均衡等功能。Nginx 进程的关系如下图所示。
在这里插入图片描述
Nginx 是支持但进程(master 进程)提供服务的,那么为什么通常要按照 master-worker 方式配置同时启动多个进程呢?这样做的好处主要有以下两点:

  • 由于master 进程不会对用户请求提供服务,只用于管理真正提供服务的 worker 进程,所以 master 进程可以是唯一的,它专注于自己的纯管理工作,为管理员提供命令行服务,如服务起停、配置重载、平滑升级等。master 进程需要拥有较大的权限,例如,通常会利用 root 用户启动 master 进程。worker 进程的权限要小于或等于 master 进程,这样master 进程才可以完全地管理 worker 进程。当任意一个 worker 进程出现错误从而导致 coredump 时, master 进程会立刻启动新的 worker 进程继续服务。
  • 多个 worker 进程处理互联网请求不但可以提高服务的健壮性,最重要的是,这样可以充分利用现在常见的 SMP 多核架构,从而实现微观上真正的多核并发处理。因此,用一个进程来处理互联网请求肯定是不合适的。另外,为什么要把 worker 进程数量设置得与 CPU 核心数量一致呢? 这是因为 Nginx 与 Apache 服务器的不同之处。在 Apache 上每个进程在一个时刻只处理一个请求,因此,如果希望 Web 服务器拥有并发处理的请求数最多,就要把 Apache 的进程或线程数设置得更多,通常达到一台服务器拥有几百个工作进程,这样大量的进程间切换将带来无谓的系统资源消耗。而 Nginx 则不然,一个 worker 进程可以同时处理的请求数只受限于内存大小,而且在架构设计上,不同的worker进程之间处理并发请求时几乎没有同步锁的限制,worker 进程通常不会进入睡眠状态,因此,当 Nginx 上的进程数与 CPU 核心数相等时,进程间切换的代价是最小的。

参考

  • 《深入理解 Nginx》
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值