Nginx 架构基础
1 Nginx请求处理流程

2 Nginx进程结构

3 Nginx进程管理:信号
3.1 Master进程
- 监控worker进程
- CHLD
- 管理worker进程
- 接收信号
- TERM,INT
- QUIT
- HUP
- USR1
- USR2
- WINCH
3.2 Worker进程
- 接收信号
- TERM,INT
- QUIT
- USR1
- WINCH
3.3 nginx命令行
- reload:HUP
- reopen:USR1
- stop:TERM
- quit:QUIT
4 reload 流程
1)向master进程发送HUP信号(reload命令)
2)master进程校验配置语法是否正确
3)master进行打开新的监听端口
4)master进程用新配置启动新的worker子进程
5)master进程向老worker子进程发送QUIT信号
6)老worker进程关闭监听句柄,处理完当前连接后结束进程

5 热升级流程
1)将旧Ningx文件换成新Nginx文件(注意备份)
2)向master进程发送USR2信号
3)master进程修改pid文件名,加后缀.oldbin(进程自动改的,不需要手动改)
4)master进程用新Nginx文件启动新master进程
5)向老master进程发送QUIT信号,关闭老master
6)回滚:向老master发送HUP,向新master发送QUIT

6 worker进程:优雅的关闭
1)设置定时器worker_shutdown_timeout
2)关闭监听句柄
3)关闭空闲连接
4)在循环中等待全部连接关闭
5)退出进程
7 网络相关
7.1 网络传输
- 应用层
- 传输层
- 网络层
- 链路层
- 物理层

7.2 TCP流与报文

7.3 TCP协议与非阻塞接口
- 读事件
- Accept建立连接
- Read读消息
- 写事件
- Write写信息

8 Nginx事件循环


8.1 epoll
前提
高并发连接中,每次处理的活跃连接数量占比很小
实现
红黑树,链表
使用
创建,操作(添加/修改/删除),获取句柄,关闭

9 模块分类

Nginx 架构基础的更多相关文章
- nginx架构与基础概念
1 Nginx架构 Nginx 高性能,与其架构有关. Nginx架构: nginx运行时,在unix系统中以daemon形式在后台运行,后台进程包含一个master进程和多个worker ...
- Linux架构之Nginx Web基础1
第41章 Nginx Web基础入门 41.1 Nginx部署 41.1.1 Nginx的安装方式 源码编译 官方仓库 epel仓库 优点 规范 安装简单 安装简单 便于管理 配置易读 缺 ...
- [转载] 深入 nginx 架构
原文: http://www.cnbeta.com/articles/402709.htm 了解 nginx 架构帮助我们学习如何开发高性能 web 服务. 为了更好地理解设计,你需要了解NGINX是 ...
- Magento 架构基础知识概述
Megento 架构基础知识概述 Magento整合了面向对象的基于PHP的应用程序的核心架构原则.这些一般原则的综合讨论既有在线的,也有印刷形式.以下讨论主要关注这些主题如何直接应用于Magento ...
- 微服务架构基础之Service Mesh
ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础. 那么到底什么是 Serv ...
- nginx实现基础web
目录 nginx实现基础web 什么是lnmp lnmp架构如何工作 Nginx与Fast-CGO详细工作流程 LNMP环境准备 一,部署LNMP 1.使用nginx官方源 2.创建nginx用户 3 ...
- Nginx Web 基础入门
目录 Nginx Web 基础入门 Nginx快速安装 两种方式部署Nginx 如何升级nginx或者添加功能 使用systemd管理nginx nginx相关配置文件 nginx的配置文件详解 虚拟 ...
- nginx 的基础配置[转]
nginx 的基础配置 分类: 工具软件2013-11-13 23:26 11人阅读 评论(0) 收藏 举报 目录(?)[-] 管理配置文件 全局配置 虚拟机server配置 location配置 ...
- Nginx学习笔记(一) Nginx架构
Nginx架构 Nginx全程是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. ...
随机推荐
- 菜鸡的Java笔记 第十九 - java 继承
继承性的主要目的,继承的实现,继承的限制 继承是面向对象中的第二大主要特点,其核心的本质在于:可以将父类的功能一直沿用下去 为什么需要继承? ...
- Linux下Zabbix5.0 LTS添加MySQL监控,实现邮件报警并执行预处理操作
依据前文:Linux下Zabbix5.0 LTS监控基础原理及安装部署(图文教程) 环境,继续添加MySQL应用集. 第一部分:添加Zabbix自带的MySQL应用集. 在ZabbixClient-0 ...
- centos7系列的网络yum源配置
因为新安装centos机器yum比较旧,主要是对网易源进行配置,其它源也差不多.我是在securecrt远程ssh工具操作的,非虚拟机软件上. yum install lszrz -y 安装上传工 ...
- C#练习4
//错误的程序using System; class Test { unsafe static void WriteLocations(byte[]arr) { fixed(byte*p_arr=ar ...
- [bzoj1032]祖码
先将连续的一段相同的点连起来,然后考虑对于一段区间,分两种情况:1.首尾两点再同时消掉,必然要先将去掉首尾的一段消掉后再消2.首尾两点再不同时刻消掉,那么必然存在一个断点k,使得k左右无关(题目中的错 ...
- 通过 for 循环,比较 Python 与 Ruby 编程思想的差别
作者:Doug Turnbull 译者:豌豆花下猫@Python猫 原文:https://softwaredoug.com/blog/2021/11/12/ruby-vs-python-for-loo ...
- java实现自动化发布平台核心代码
1.搭建jenkins环境 (1)jenkins官网下载jenkins.war包 (2)将该war包放入到tomcat的webapp的目录下(前提条件需要配置tomcat的环境,详情请自行百度) (3 ...
- Cannot connect to runtime process
发生一个或多个错误. 未能启动调试适配器.可以在输出窗口中查看额外的信息. Cannot connect to runtime process, timeout after 10000 ms (rea ...
- Vulnhub-DarkHole_1 题解
Vulnhub-DarkHole_1-Writeup 靶机地址:DARKHOLE: 1 Difficulty: Easy 扫描与发现 使用arp-scan发现目标IP arp-scan -l 使用nm ...
- c语言用指针交换两个变量
#include<stdio.h> #include<math.h> int main(){ void swap(int a,int b); void swapPointer( ...