Nginx整体结构、进程模型

一、Nginx整体结构

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

在这里插入图片描述

第一列 第二例 第三列
UID,进程所属用户ID 进程ID(PID),进程唯一标识 父进程ID (PPID)

2. nginx进程模型

Nginx整体结构、进程模型_第1张图片

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

master进程责任:监控进程,不处理具体业务,专门用来管理和监控 worker进程。

worker进程责任:主要用来干活的,和用户进行交互。

master进程和worker进程通信机制:信号、共享内存。

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

3. 调整worker进程数量

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

查看 内核处理器数量

grep -c processor /proc/cpuinfo //可通过虚拟机进行配置

配置worker进程数量

sudo vim /usr/local/nginx/conf/nginx.conf

Nginx整体结构、进程模型_第2张图片
此处改成电脑物理内核数量,然后需要重启Ubuntu系统即可,本人电脑是6核。(重新启动Nginx服务)

二、Nginx进程模型

1. nginx重载配置文件

Nginx整体结构、进程模型_第3张图片

不需要关掉nginx服务,修改配置文件后,再重启操作。(不关掉对外服务)

sudo ./nginx -s reload

2. nginx热升级和热回滚(运行的时候升级)

不关掉对外服务,就可以实现nginx升级和回退。

3. nginx关闭

  1. 直接杀掉master进程(一般不这么做) ,如果杀掉的是worker进程,master重新启动一个worker进程。
sudo kill master进程ID
  1. 优雅退出(建议
sudo ./usr/local/nginx/sbin/nginx -s quit	//当前还包含stop退出

总结:

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

你可能感兴趣的:(TCP/IP,linux,nginx,内核,ubuntu)