首页
学习
活动
专区
工具
TVP
发布

NGINX工作进程模型

NGINX 工作进程模型 image.png image.png NGINX有一个master进程(它执行特权操作,如读取配置和绑定到端口)和许多worker and helper进程。...00:00:00 _ nginx: cache loader process 在此四核服务器上,NGINX进程创建四个工作进程和几个管理磁盘内容缓存的缓存帮助程序进程。...NGINX是如何工作的? NGINX使用可预测的进程模型,该模型根据可用的硬件资源进行调整: 主进程执行特权操作,如读取配置和绑定到端口,然后创建少量子进程(接下来的三种类型)。...image.png 每个 NGINX 工作进程都使用 NGINX的配置进行初始化,并由主进程提供一组侦听套接字。...更新和升级NGINX的配置 NGINX进程架构,具有少量工作进程,可以非常有效地更新配置,或是升级软件本身。

76900

Nginx技术总结之二——Nginx进程模型

接上篇:Nginx技术总结之一——Nginx模块与工作原理 二. Nginx进程模型 Nginx进程模型,可以由下图来表示: ?...在工作方式上,Nginx 分为单工作进程和多工作进程两种模式。 单工作进程模式:除主进程外,还有一个工作进程,工作进程是单线程的; 多工作进程模式:每个工作进程包含多个线程。...Nginx 默认为单工作进程模式; Nginx 在启动后,会有一个 master 进程和多个 worker 进程。...我们要控制 Nginx,只需要通过 kill 向 master 进程发送信号就行了。比如 kill -HUP pid,我们一般用这个信号来重启 Nginx,或重新加载配置。...我们还是拿 reload 来说,我们看到,执行命令时,我们是启动一个新的 nginx 进程,而新的 nginx 进程在解析到 reload 参数后,就知道我们的目的是控制 nginx 来重新加载配置文件了

1.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

重识Nginx - 14 Nginx进程结构

文章目录 Nginx的请求处理流程 Nginx的多进程结构 Nginx进程结构演示 关键配置 查看ng进程 信号说明 reload 观察 worker进程的pid 向Master 进程 发送 SIGHUB...向worker进程 发送 SIGTERM ---- Nginx的请求处理流程 ---- Nginx的多进程结构 Worker进程 处理请求, Master进程管理Worker进程。...多进程模式避免了多线程共享同一个地址空间,某一个模块引发了段错误时,在地址越界出现时,会导致整个Nginx不可用。 因此Nginx采用多进程,在设计上保证了高可用。...Nginx 期望一个worker进程使用一颗cpu, 把某个worker进程和某个cpu绑定在一起,可以更好地使用cpu上的缓存,来减少缓存失效的命中率。...其中master的pid 为 994792 , 两个worker进程是由master进程启动的, 其中 pid 分别为 994793 和 994794 ---- 信号说明 信号说明: 重识Nginx

24140

nginx进程架构详解

一、进程模型 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的。那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧。...我们也可以手动地关掉后台模式,让nginx在前台运行,并且通过配置让nginx取消master进程,从而可以使nginx以单进程方式运行。...所以,我们可以看到,nginx是以多进程的方式来工作的,当然nginx也是支持多线程的方式的,只是我们主流的方式还是多进程的方式,也是nginx的默认方式。...nginx采用多进程的方式有诸多好处,所以我就主要讲解nginx的多进程模式吧。 刚才讲到,nginx在启动后,会有一个master进程和多个worker进程。...worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,这里面的原因与nginx进程模型以及事件处理模型是分不开的。nginx进程模型,可以由下图来表示: ?

2.3K10

04-Nginx进程模型解析

Nginx进程模型解析 master进程: 主进程 worker进程: 工作进程 默认是一个主进程, 一个工作进程, Nginx的工作进程是可以通过配置文件进行修改的 # 工作进程数量 worker_processes...1; 修改nginx.conf配置, 修改为2 记得每次修改完成配置文件都进行检查一下, 避免发生错误 检查完成没有问题, 就可以重启Nginx了, 修改完成Nginx必须重启, 不然配置无法生效..., 一旦发生阻塞, 那么就需要开启新的进程处理新的请求, 这是典型的BIO同步阻塞模型, 缺点也非常明显, 在有大量请求过来的时候, 一旦发生阻塞, 就会开启大量的线程,造成资源的浪费和CPU标高问题,...这也是BIO的典型问题 Nginx事件处理 在Nginx的事件处理中, 一个工作进程可以在同一时间处理多个客户端的请求, 一个客户端请求发生阻塞, 并不会影响到该进程处理其他的请求, 这就是为了解决...use epoll; # 每个worker允许的客户端最大连接数, 默认为1024, 可以修改 worker_connections 1024; } 没错, 记得修改完之后重启一下nginx

18720

Nginx模块管理和进程管理

上一篇(Nginx的源码结构和模块初始化 )已经说了Nginx的主要模块包括core、event、http、mail和misc(杂项),而每一个模块根据需要又有很多模块,这5类模块只有core是不可以禁止...选择适用Nginx的模块 在Nginx(1.8.0)目录下适用./configure –help可以查看哪些模块已经被安装: ?...Nginx安装第三方模块 在对Nginx进行configure配置编译的时候,有一个参数–add-module,就是用来调价第三方模块的,例如: --add-module=/root/nginx-accesskey...Nginx进程管理 Nginx分为Single和Master两种进程模式,Single为单进程方式工作,通过ngx_single_process_cycle完成,Master模型即是一个master进程和多个...worker进程,在实际的开发过程中使用Master方式。

61720

Nginx进程结构模型

上一篇我们介绍了Nginx的是适用场景。今天我们来介绍一下Nginx进程结构模型。 nginx 分为两种进程结构:单进程 / 多进程。...单进程模型下主进程就是工作进程,此时没有监控进程,主要是用于调试用。 我们生产环境主要是使用多进程模型。所以我们主要介绍多进程模型。 多进程模型下Nginx启动后会有多个进程。...work进程一般设置成cpu核心数 ,Nginx采用了事件驱动,目的是为了让每个work进程可以独占一个cpu,更好地使用cpu缓存,减少缓存失效的命中率,以提高处理效率。...那么有没有想过Nginx为什么采用多进程结构,而不是多线程结构呢? Nginx要保持它自身的高可靠性,如果使用多线程模型,多线程之间是共享同一个地址空间的。...如果有一个第三方模块引发了地址空间导致的段错误时,会导致整个Nginx进程就挂了。 当我们采用多进程模型时,就会很好地规避这个风险。

45610

Nginx服务器的进程

Nginx服务器的进程有3类:主进程、工作进程、缓存进程 (1)主进程 Nginx启动时运行的主要进程,主要功能是与外界通信和对内部其他进程进行管理 主要工作内容 1)读取配置文件,验证有效性和正确性...2)建立、绑定、关闭 socket 3)按照配置生成、管理、结束工作进程 4)接收指令,如 重启、升级、退出 5)不中断服务,平滑重启、升级,升级失败的回滚处理 6)开启日志文件,获取文件描述符 (2)...工作进程 由主进程生成,生成数量由配置文件指定,工作进程生存于主进程的整个生命周期 主要工作内容 1)接收请求 2)将请求依次送入各个功能模块进行过滤处理 3)IO调用,获取响应数据 4)与后端服务器通信...,接收后端服务器处理结果 5)数据缓存,访问缓存索引、查询、调用缓存数据 6)发送请求结果 7)接收主进程指令,如 重启、升级、退出 (3)缓存进程 缓存进程有两类 1)缓存索引重建进程 nginx启动后由主进程生成...,在缓存元数据重建完成后就自动退出 该进程启动后,对缓存文件的目录结构扫描,在内存中建立索引元数据库 2)缓存索引管理进程 生存于主进程的整个生命周期 负责在索引元数据更新完成后,对元数据是否过期进行判断

4.3K40

Nginx技术总结之三——Nginx进程IO模型

接上篇:Nginx技术总结之二——Nginx进程模型 三. Nginx 的多进程 IO 模型 参考地址:《为啥性能高?...Nginx架构初探》 3.1 多进程 IO 模型的优点 首先,对于每个 worker 进程来说,独立的进程不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。...3.2 异步非阻塞 Nginx 采用了异步非阻塞的方式来处理请求。也就是说,Nginx 是可以同时处理成千上万个请求的。...一个 worker 进程可以同时处理的请求数只受限于内存大小,而且在架构设计上,不同的 worker 进程之间处理并发请求时几乎没有同步锁的限制,worker 进程通常不会进入睡眠状态,因此,当 Nginx...这对操作系统来说,进程带来的内存占用非常大,进程的上下文切换带来的 CPU 开销很大,性能自然就上不去了,同时这些开销完全是没有意义的。 为什么 Nginx 可以采用异步非阻塞的方式来处理?

1.1K30

centos7 nginx安装启动进程状态杀掉进程

执行目录:/usr/sbin/nginx      模块所在目录:/usr/lib64/nginx/modules      配置所在目录:/etc/nginx/      默认站点目录:/usr/share.../nginx/html      主要配置文件:/etc/nginx/nginx.conf 指向:/etc/nginx/conf.d/default.conf      PID目录:/var/run/nginx.pid...nginx.service     systemctl status nginx.service 5、查看nginx的状态及进程与端口(启动后)     命令1:systemctl status nginx.service...命令4:ps aux | grep nginx(查看nginx进程运行状态)or ps aux | grep :80 | grep -v grep(过虑grep本身) ?...6、杀掉进程命令     a)相关nginx进行全部杀掉:killall -9 nginx       b)把PID两个进程杀掉:kill -9 pid1 and kill -9 pid1  ?

3.8K50

Nginx进程结构,你明白吗?

Nginx 进程结构 这篇文章我们来看下 Nginx进程结构,Nginx 其实有两种进程结构: 单进程结构 多进程结构 单进程结构实际上不适用于生产环境,只适合我们做开发调试使用。...因为在生产环境中我们必须保持 Nginx 足够健壮以及 Nginx 可以利用多核的一个特性,而单进程Nginx 是做不到这一点的,所以默认的配置中都是打开为多进程Nginx。...我们来看一下,多进程Nginx 结构中它的进程模型是怎样的。 ?...刚才我们介绍了 Nginx 使用了多进程模型,由 master 作为父进程启动许多子进程,也知道了 Nginx 父子进程之间是通过信号来管理的,接下来通过一个实例给大家直观的看下父子进程以及信号之间是如何工作的...Nginx进程结构实例 首先启动 Nginx,并在 Nginx 中启动了两个 worker 进程,通过 ps 命令可以看到当前进程 PID 和父进程 PID,有一个 nginx master 进程是由

82010

重识Nginx - 15 使用信号管理Nginx的父子进程

文章目录 Nginx 进程管理 :信号 常用信号说明 ---- Nginx 进程管理 :信号 标红的 USR2 、WINCH ,只能通过 kill 的方式 来发送,主要是nginx 热部署的时候使用...---- 常用信号说明 信号 取值 默认动作 含义(发出信号的原因) SIGHUP 1 Term 终端的挂断或进程死亡 SIGINT 2 Term 来自键盘的中断信号 SIGQUIT 3 Core 来自键盘的离开信号...的异常信号 SIGFPE 8 Core 浮点例外 SIGKILL 9 Term 杀死 SIGSEGV 11 Core 段非法错误(内存引用无效) SIGPIPE 13 Term 管道损坏:向一个没有读进程的管道写数据...如果停止,继续执行 SIGSTOP 17,19,23 Stop 非来自终端的停止信号 SIGTSTP 18,20,24 Stop 来自终端的停止信号 SIGTTIN 21,21,26 Stop 后台进程读终端...SIGTTOU 22,22,27 Stop 后台进程写终端 SIGBUS 10,7,10 Core 总线错误(内存访问错误) SIGPOLL Term Pollable事件发生(Sys V),与SIGIO

58540

nginx源码阅读(6)Master进程浅析

由于nginx使用的是多进程的模型,因此,进程间的通信或者同步很重要,为什么要进行进程同步呢?...我们知道,nginx有master和worker进程,在上篇文章已经分析过了master具体是怎样创建worker进程的。不过,在创建worker进程的时候,是需要对进程同步的。...举个具体的例子,我们假设服务器共有4个worker进程,我们知道nginx有一个全局变量,是ngx_processes数组,他存储着所有进程的信息,在worker1创建的时候,worker2,worker3...因此,也就引出了本文所要总结的内容,即nginx进程通信机制。...而nginx,只利用了第一条,即master向channel[0]写数据时,worker可从channel[1]读数据 socketpair也用来进行父子进程的通信,子进程会继承父进程的资源。

38621

nginx源码阅读(5)Master进程浅析

一、前言 众所周如,Nginx是多进程架构。有1个master进程和N个worker进程,一般N等于cpu的核数。...二、nginx进程模式 在开始讲解master进程之前,我们需要首先知道,其实Nginx除了生产模式(多进程+daemon)之外,还有其他的进程模式,虽然这些模式一般都是为了研发&调试使用。...非daemon模式 以非daemon模式启动的nginx进程并不会立刻退出。其实在终端执行非bash内置命令,终端进程会fork一个子进程,然后exec执行我们的nginx bin。...这样,随着终端的退出,master进程仍然可以继续服务,因为master进程已经和启动nginx命令的终端shell进程无关了。 启动nginx命令,是如何生成daemon进程并退出的呢?...图6-第二个worker进程的channel示意图 nginx是怎么解决这个问题的呢?简单来讲, nginx使用了进程间传递文件描述符的技术。

1.4K21

如何修改 Nginx 源码实现 worker 进程隔离

上述对应会生成如下的 nginx.conf 配置示例文件如下。...源码实现进程隔离 对于 OpenResty 比较了解的同学应该知道,OpenResty 在 Nginx 的基础上进行了扩展,增加了 privilege 进程 privileged agent 特权进程不监听任何端口...我们需要做的是增加 1 个或者多个 woker 进程,专门处理 APISIX 内部的请求即可。 Nginx 采用多进程模式,master 进程会调用 bind、listen 监听套接字。...Nginx 源码中创建 worker 子进程的伪代码如下: void ngx_master_process_cycle(ngx_cycle_t *cycle) { ngx_setproctitle...到此,我们就通过修改 Nginx 源码实现了特定基于端口号的进程隔离方案。此 demo 中的端口号是写死的,我们实际使用的时候是通过 lua 代码传入的。

63030
领券