一:nginx的整体结构

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

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

ps -ef命令

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

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

第三列:父进程ID(PPID)。
fork(),worker进程是被master进程通过fork()创建出来的-worker进程是master进程的子进程,master是父进程
[email protected]:/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)总结

多进程,多线程:

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

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

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信