文档章节

nginx 进程管理

六飞鞋影魔
 六飞鞋影魔
发布于 2017/04/06 15:17
字数 1007
阅读 28
收藏 0

Nginx采用一个master管理进程、多个worker工作进程、一个可选的cache manager 进程、一个cache loader进程。服务器的进程管理其实都差不多,如Mysql innodb进程的管理:一个master进程、4个IO thread 、一个锁监控进程、一个错误监控进程

Nginx进程管理优点:

  • 利用多核系统的并发处理能力

现代操作系统已经支持多核CPU架构,这使得多个进程可以占用不同的CPU核心来工作。Nginx中所有的worker工作进程都是完全平等的。这提高了网络性能、降低了请求的时延

  • 负载均衡

多个worker工作进程间通过进程竟能令严实现负载均衡,即一个请求到来时更容易被分配到负载较轻的worker工作进程中处理。

  • 管理进程会负责监控工作进程的状态,并负责管理其行为

管理进程不会占用多少系统资源,它只是用来启动、停止、监控或者使用其他行为来控制工作进程。首先,提高了系统的可靠性,当工作进程出现问题时,管理进程可以启动新的工作进程来避免系统的性能下降。其实管理进程支持Nginx服务运行中程序升级、配置修改等操作,这种设计使得动态可拓展性、动态定制性、动态进化性较容易实现。

Worder进程工作原理:

nginx采用信号的方式来通过master进程对worker的控制,当master发出信号时worker通过ngx_signal_handler方法来处理。

如:当接收到QUIT信号时,ngx_quit标志会置为1,这是在告诉worker进程需要优雅地关闭进程; 当接收到TERM信号时,ngx_terminate标志会置为1,worker进程则强制关闭进程;当接收到USR1信号时,ngx_reopen标志位置为1,nginx则重新打开文件(如切换日志文件)

worker进程流程图:

Master进程工作原理:

master进程不需要处理网络事件,它不负责业务的执行,只会通过管理worker等子进程来实现重启服务、平滑升级、更换日志文件、配制文件实时生效等功能。它会通过检查7个标志位(ngx_reap、ngx_quit、ngx_terminate、ngx_reconfigure、ngx_reopen、ngx_change_binary、ngx_noaccept)来决定ngx_master_process_cycle方法的运行。

 

  • 进程中接收到的信号对nginx框架的意义
信号  对应进程中的全局标志位变量  意义
QUIT ngx_quit 优雅关闭整个服务
TERM 或者INT ngx_terminate 强制关闭整个服务
USR1 ngx_reopen 重新打开服务中所有文件
WINCH ngx_noaccept 所有子进程不再接受处理新的连接
USR2 ngx_change_binary 平滑升级到新版本的nginx程序
HUP ngx_reconfigure 重读配置文件并使服务对新配置项生效
CHLD ngx_reap 有子进程意外结束,这时需要监控所有子进程

别外还有一个标志位也会用到,它仅仅是在master工作流程中为标志位使用,与信号无关

ngx_unit_t     ngx_restart;

master进程fork一个子进程会存储在ngx_processes的全局数组选择一个未使用的元素中。如果子进程数超过最大值1024,会返回NGX_INVALID_PID。 ngx_processes数据中这些进程都是依靠信号来改变进程的状态的。当每个子进程意外退出时,master父进程会接收到Linux内核发来的CHLD信息,而处理信息的ngx_signal_handler会把:sig_reap标志位置为1,调用ngx_process_get_status方法并修改ngx_processes数组中所有子进程的状态

master工作流程图如下

© 著作权归作者所有

共有 人打赏支持
六飞鞋影魔
粉丝 1
博文 11
码字总数 5446
作品 0
深圳
程序员
Nginx编译参数和进程管理介绍(二)

Nginx编译参数和进程管理介绍(二) 本文介绍两个部分:Nginx的编译参数以及nginx的进程管理。文章总体层次架构如图所示: 一、Nginx编译参数详解 从源代码编译应用程序时通常有三个步骤:配...

PowerMichael
2017/07/25
0
0
源码安装Nginx及配置文件详解

一、安装Nginx 二、Nginx编译选项 三、Nginx进程管理命令 四、Nginx配置文件解析 一、安装Nginx 1、提前安装所需软件依赖包 yum install -y gcc pcre pcre-devel openssl openssl-devel gd ...

youshine
2015/07/08
0
0
Nginx服务学习(4)-目录说明

>安装目录 路径 类型 作用 **/etc/logrotate.d/nginx** 配置文件 Nginx日志轮转,用于logrotate服务的日志切割 **/etc/nginx** 目录、配置文件 Nginx主配置文件 **/etc/nginx/nginx.conf** ...

Neo_robot
01/02
0
0
8 个用于有效地管理进程的 Linux 命令

通过这些关键的命令来全程管理你的应用。 一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止。如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理。这八个...

02%
09/16
0
0
Nginx 开机启动

本文摘自: http://www.01happy.com/centos-nginx-shell-chkconfig/ 在安装完nginx后,重新启动需要“kill -HUP nginx进程编号”来进行重新加载,显然十分不方便。如果能像apache一样,直接通...

MikeMei
2016/07/25
11
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
8
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
14
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部