文档章节

nginx 进程管理

六飞鞋影魔
 六飞鞋影魔
发布于 2017/04/06 15:17
字数 1007
阅读 31
收藏 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工作流程图如下

© 著作权归作者所有

共有 人打赏支持
下一篇: Mysql 体系结构
六飞鞋影魔
粉丝 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
2018/01/02
0
0
8 个用于有效地管理进程的 Linux 命令

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

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

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

MikeMei
2016/07/25
11
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows命令行杀死占用端口的进程

假如要查看的端口号是80: netstat -aon|findstr "80" 这个时候我们会看到下面的 TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448 最后,杀死进程 taskkill /f /t......

hengbao5
13分钟前
0
0
c++ 定义新的异常

#include <iostream> #include <exception> using namespace std; struct MyException : public exception { const char * what () const throw () { return "C++ Exception"; } }; int main......

天王盖地虎626
今天
3
0
PDMan-2.1.1 发布:用心开源,免费的国产数据库建模工具(春节前最后一个版本)

一、软件介绍 PDMan 是一款开源免费的数据库模型建模工具,是PowerDesigner之外另一种更好的选择。支持Windows,Mac,Linux等操作系统,具有上手容易,使用简单的特点。 2018年获得码云GVP (Gi...

O龙猫O
今天
20
0
OSChina 周二乱弹 —— 以后我偷小鱼干养你

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @庞巴哥 :只有这节奏瞬间变得轻松。。。。。。。。。分享Talking Eyes的单曲《In the sun (Extended Version)》: 《In the sun (Extended Ve...

小小编辑
今天
730
10
多表查询

第1章 多表关系实战 1.1 实战1:省和市  方案1:多张表,一对多  方案2:一张表,自关联一对多 1.2 实战2:用户和角色 (比如演员和扮演人物)  多对多关系 1.3 实战3:角色和权限 (比如...

stars永恒
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部