网站首页 > 精选教程 正文
Nginx 的进程模型
Nginx 服务器,正常运行过程中:
- 多进程:一个 Master 进程、多个 Worker 进程
- Master 进程:管理 Worker 进程
- 对外接口:接收外部的操作(信号)
- 对内转发:根据外部的操作的不同,通过信号管理 Worker
- 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
- Worker 进程:所有 Worker 进程都是平等的
- 实际处理:网络请求,由 Worker 进程处理;
- Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。
思考:
- 请求是连接到 Nginx,Master 进程负责处理和转发?
- 如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?
HTTP 连接建立和请求处理过程:
- Nginx 启动时,Master 进程,加载配置文件
- Master 进程,初始化监听的 socket
- Master 进程,fork 出多个 Worker 进程
- Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求
Nginx 高性能、高并发:
- Nginx 采用:多进程 + 异步非阻塞方式(IO 多路复用 epoll)
- 请求的完整过程:
- 建立连接
- 读取请求:解析请求
- 处理请求
- 响应请求
- 请求的完整过程,对应到底层,就是:读写 socket 事件
Nginx 的事件处理模型
request:Nginx 中 http 请求。
基本的 HTTP Web Server 工作模式:
- 接收请求:逐行读取请求行和请求头,判断段有请求体后,读取请求体
- 处理请求
- 返回响应:根据处理结果,生成相应的 HTTP 请求(响应行、响应头、响应体)
Nginx 也是这个套路,整体流程一致。
模块化体系结构
nginx的模块根据其功能基本上可以分为以下几种类型:
- event module: 搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括ngx_events_module, ngx_event_core_module和ngx_epoll_module等。nginx具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。
- phase handler: 此类型的模块也被直接称为handler模块。主要负责处理客户端请求并产生待响应内容,比如ngx_http_static_module模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。
- output filter: 也称为filter模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有html页面增加预定义的footbar一类的工作,或者对输出的图片的URL进行替换之类的工作。
- upstream: upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream模块是一种特殊的handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。
- load-balancer: 负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。
转自http://ningg.top/nginx-series-principle/
猜你喜欢
- 2024-10-03 深入探索Java工作原理:JVM,内存回收!
- 2024-10-03 阿里资深架构师整理分享的分布式系统架构:技术栈详解与进阶文档
- 2024-10-03 一张图理解Nginx FastCGI:Nginx FastCGI工作原理解析
- 2024-10-03 阿里Java三面:高可用RabbitMQ集群的搭建及原理分析
- 2024-10-03 Nginx基本原理和知识 nginx底层原理
- 2024-10-03 Nginx 原理和架构 nginx工作原理
你 发表评论:
欢迎- 最近发表
-
- 我的世界光影MOD下载(我的世界光影mod下载安装)
- 我的世界1.7/1.8VoxelMap小地图MOD下载
- 我的世界1.7.10多世界 整合包(我的世界1.7.10forge整合包)
- 我的世界1.8最好用的修改器下载(我的世界1.8最好用的修改器下载安装)
- 我的世界更多弯曲动作MOD下载(我的世界更多弯曲动作mod下载手机版)
- 我的世界龙珠MOD下载(我的世界龙珠模组整合包下载)
- 我的世界1.7.10以太2 下载(我的世界以太2mod1.12.2)
- 我的世界虚拟人生MOD下载分享(我的世界虚拟人生下载安装)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- “我的语言极限,即是我的世界的极限。” ——《On Java》书籍推荐
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)