栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

nginx结构与模型 - Linux C++网络编程(四)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx结构与模型 - Linux C++网络编程(四)

一:nginx的整体结构

(1.1)master进程和worker进程概览(父子关系)

启动nginx,看到了一个master进程,一个worker进程

ps -ef命令

第一列:UID,进程所属的用户id

第二列:进程ID(PID),用来唯一的标识一个进程

第三列:父进程ID(PPID)。 fork(),worker进程是被master进程通过fork()创建出来的-worker进程是master进程的子进程,master是父进程

book@www.100ask.org:/usr/local/nginx/sbin$ ps -ef | grep nginx
root      10005      1  0 17:08 ?        00:00:00 nginx: master process ./nginx
nobody    10006  10005  0 17:08 ?        00:00:00 nginx: worker process
book      10102   2293  0 17:08 pts/8    00:00:00 grep --color=auto nginx

(1.2)nginx进程模型

1个master进程,1到多个worker进程 这种工作机制来对外服务的;这种工作机制保证了 nginx能够稳定、灵活的运行;

a)master进程责任:监控进程,不处理具体业务,专门用来管理和监控worker进程;master,角色是监工,比如清闲;

b)worker进程:用来干主要的活的,(和用户交互);

c)master进程和worker进程之间要通讯,可以用 信号 ,也可以用 共享内存 ;

d)稳定性,灵活性,体现之一:worker进程 一旦挂掉,那么master进程会立即fork()一个新的worker进程投入工作中去;

(1.3)调整worker进程数量

worker进程几个合适呢?公认的做法: 多核计算机,就让每个worker运行在一个单独的内核上,最大限度减少CPU进程切换成本,提高系统运行效率;

物理机:4核(4个processors);

工作站:2个物理cpu ,蓝色的一个cpu,红色的一个cpu

每个物理cpu里边内核数量,是4个;core1 --core4

每个core里边有两个逻辑处理器(超线程技术/siblings)

16个processors(最细小的单位,也就是平时大家说的处理器个数)

修改nginx工作进程worker数量

/home/book/nginx-1.14.2/conf/nginx.conf文件最开始位置的worker_processes  1;修改为对应服务器主机能够支持的数量。

同时也可以将work进程和processor进行一一绑定,这样可以极大的将资源完成利用。

二:nginx进程模型细说

稳定  ,灵活

(2.1)nginx重载配置文件

修改配置文件config/nginx.conf,sudo ./nginx -s reload从新装载配置文件。从新装载以后发现work进程被重新装载了。

(2.2)nginx热升级,热回滚

kill guid直接删除一个work,新的就会自动创造出一个新的work进程

升级过程不停止服务直接升级,或者回滚之前的版本

(2.3)nginx的关闭

ps -ef | grep nginx

(2.4)总结

多进程,多线程:

多线程模型的弊端:共享内存,如果某个线程报错一定会影响到其他线程,最终会导致整个服务器程序崩溃;

多进程模型的弊端:各个进程之间资源不共享,进程之间数据配合时数和进程切换都需要耗费很大的资源。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号