码迷,mamicode.com
首页 > 系统相关 > 详细

运行中nginx进程间的关系

时间:2017-05-17 12:07:45      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:核心   image   并发   line   效率   ora   之间   sha   利用   

在正式提供产品的环境下,部署nginx都是使用master进程来管理多个worker进程.

一般情况下,worker进程都与服务器上的核数相等,每一个worker进程都是繁忙的,它们真正的提供互联网服务.

而master进程则很清闲,只负责监控管理worker进程.

worker进程之间通过共享内存,原子操作等一系列进程之间的通讯来实现负载均衡

共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。

部署后nginx进程之间的关系,如下图所示:

技术分享

 

那么为什么要按照master-worker方式配置多个进程:有两点

1.master进程可以是唯一的,只专注于管理真正提供服务的worker进程

2.多个worker进程提高了服务的健壮性,还充分利用现有的smp架构(堆成多处理架构),从而实现真正的多核并发处理

那么为什么worker进程设计的与cpu核数一致吶,先要看看apache与nginx有什么不同之处:

apache一个进程处理一个请求,在大并发量的情况下,只能加大进程或者线程数,通常一台服务器几百个进程,大量进程切换带来无谓的系统资源消耗

nginx一个worker进程可处理的请求数只限制在内存的大小,不同的worker进程处理并发请求没有同步锁限制,worker进程不会睡眠,故设置worker进程与cpu核数一致,进程间切换代价是最小的.(即cpu是8核,worker进程设置为8个.)(补充知识:进程与CPU调度的关系,单个核心处理多个进程的时候,是排队处理的,所以将Worker进程数量设置超过核心数是没有太大意义的,会导致进程间切换额外开销)

 

 

 

运行中nginx进程间的关系

标签:核心   image   并发   line   效率   ora   之间   sha   利用   

原文地址:http://www.cnblogs.com/gengsc/p/6866114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!