文档章节

nginx 进程管理

六飞鞋影魔
 六飞鞋影魔
发布于 2017/04/06 15:17
字数 1007
阅读 26
收藏 0
点赞 0
评论 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服务学习(4)-目录说明

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

Neo_robot
01/02
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 开机启动

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

MikeMei
2016/07/25
11
0
最稳定的Nginx绿色环境,可无限自定义PHP和mysql版本、同时运行N个版本

应学生要求,我最近更新了PHPWAMP,新版PHPWAMP8.8.8.8n添加了强大的Nginx站点管理 核心经过重新编译、完美解决不同版本和不同组件间的兼容,自动智能匹配系统所需的组件。 纯绿色解压即可使...

Lccee老师
2017/07/10
0
0
【入门篇】Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

由于最近工作的需要,本人学习了一下利用高性能web server - Nginx,来发布C/C++编写的fastCGI程序,详细细节如下。 1.介绍 Nginx - 高性能web server,这个不用多说了,大家都知道。 FastCG...

云栖希望。
2017/12/04
0
0
nginx安装配置

一、下载Nginx源文件 进入nginx官网下载nginx的稳定版本,我下载的是1.10.0。 下载:wget http://nginx.org/download/nginx-1.10.0.tar.gz 解压:tar -zxvf nginx-1.10.0.tar.gz 二、检查安装...

xiaoxiongmao8
2017/02/08
0
0
深入浅出Nginx

前言 Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。 架构图 上图基本上说明了当下流行的技术架构,其中Nginx有点入...

张丰哲
2017/09/10
0
0
window nginx启动脚本

林伟琨
2016/08/02
49
0
apache和nginx的性能分析

简单分析nginx与apache的性能 "Apache就像Microsoft的Word,它有一百万个选项,但你只需要做六个。Nginx只做了这六件事,但他做的这六件事中有五件事比Apache快50倍" 常见的web服务器:nginx...

小新锐
01/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
12分钟前
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
32分钟前
0
0
HTTP协议通信原理

了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务。 HTTP使用...

寰宇01
55分钟前
0
0
【Java动态性】之反射机制

一、Java反射机制简介

谢余峰
56分钟前
1
0
Centos 6.X 部署环境搭建

1.Linux学习笔记CentOS 6.5(一)--CentOS 6.5安装过程

IT追寻者
今天
0
0
博客即同步至腾讯云+社区声明

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=8vy9bsmadbko...

xiaoge2016
今天
1
0
大数据教程(3.1):Linux系统搭建网络YUM源服务器

博主在前面的2.5章节讲述了linux系统本地YUM服务器的搭建和httpd轻量级静态网站服务器的安装,本节博主将为大家分享内网环境中搭建自己的网络YUM服务器的全过程。如果大家对本地YUM服务器还不...

em_aaron
今天
1
0
蚂蚁技术专家:一篇文章带你学习分布式事务

小蚂蚁说: 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务...

Java大蜗牛
今天
1
0
新的Steam应用将拓展服务项目

导读 未来几周,Steam将推出两个免费的应用程序Steam Link和Steam Video。这两个应用程序都旨在拓展Steam平台的业务和便利性。 即将开放的Steam Link应用程序最先提供了Android测试版,它将允...

问题终结者
今天
0
0
golang 第三方包的使用总结

golang 第三方包的安装的方法: 1. go get 安装 $ go get github.com/gin-gonic/gin 注意:执行go get 命令需要先安装git命令,并配置git全局变量。 2. 源码包安装 由于国内网络问题,很多时...

科陆李明
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部