当前位置:首页 > 运维 > 正文内容

nginx核心知识-Nginx架构基础

phpmianshi5年前 (2016-07-06)运维65

一、Nginx的请求处理流程进程结构

1、Nginx的请求处理流程

 

2、Nginx的进程结构

 

 3、进程作用

1、Master进程

1、是进行work进程的监控管理的
2、看看work进程是否正常工作需不需要进行热部署、需不需要重新载入配置文件

2、Cache manager 缓存的管理

1、缓存为反向代理后端发来的动态请求做缓存使用

2、缓存在不光是在work进程间使用、还要被Cache manager和Cache loader使用

3、Cache loader 载入缓存

二、Nginx的进程结构实例演示

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24191 24145 0 11:36 ? 00:00:00 nginx: worker process

nobody 24192 24145 0 11:36 ? 00:00:00 nginx: worker process

root 24196 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong conf]# ../sbin/nginx -s reload

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24198 24145 0 11:38 ? 00:00:00 nginx: worker process

nobody 24199 24145 0 11:38 ? 00:00:00 nginx: worker process

root 24201 24153 0 11:38 pts/1 00:00:00 grep --color=auto nginx

[root@luoahong vim]#kill -SIGHUP 24145

[root@luoahong vim]# ps -ef|grep nginx

root 24145 1 0 11:08 ? 00:00:00 nginx: master process ../sbin/nginx

nobody 24203 24145 0 11:40 ? 00:00:00 nginx: worker process

nobody 24204 24145 0 11:40 ? 00:00:00 nginx: worker process

root 24206 24153 0 11:40 pts/1 00:00:00 grep --color=auto nginx

kill -SIGHUP 24145和../sbin/nginx -s reload的作用一样

三、使用信号管理Nginx的父子进程

四、reload和热升级

1、reload重载配置文件的真相

1、向master进程发送HUP信号(reload命令)

2、master进程校验配置语法是否正确

3、master进程进程打开新的监听端口

为什么要打开新的监听端口?因为有可能会打开原来没有打开过的端口

4、master进程用新配置启动新的worker子进程

设置定时器 worker_shutdown_timeout

5、master进程向老worker子进程发送OUIT信号

6、老worker进程关闭监听句柄,处理完当前连接后结束进程

2、不停机载入新的配置文件

3、热升级的完整流程(文字)

1、将旧Nginx文件换成新Nginx文件(注意备份)

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中、新nginx和老的nginx 所有的目录必须一致

2、向master进程发送USR2信号

没有办法通过nginx命令行发送信号处理,是因为到目前为止还没有这样的信号

3、master进程修改pid文件名,加后缀.oldbin

nginx的Master进程的PID会记录在logs目录的nginx.pid文件中

4、master进程用新的Nginx文件启动新的master进程
5、向老master进程发送QUIT信号,关闭老master
6、回滚:向老master发送HUP,向新master发送OUIT

4、不停机更新nginx二进制文件

五、优雅地关闭worker进程

worker进程优雅的关闭,主要针对的是HTTP请求。代理websocker协议,TCP,UDP层的时候不能优雅推出

1、设置定时器 worker_shutdown_timeout
2、关闭监听句柄 :保证要关闭的进程不再处理新的连接
3、关闭空闲连接 :为了利用最大化,会保存一些空闲的连接,这时会被关闭。
4、在循环中等待全部连接关闭:每发现一个请求处理完毕就会把这个连接关闭。超过设置的worker_shutdown_timeout的时间,会立即退出。
5、退出进程

作者:罗阿红 出处:http://www.cnblogs.com/luoahong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

Certbot-免费的https证书

什么是HTTPS?HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传...

openresty中location和lua的使用详解

openresty中location和lua的使用详解

与其他 location 配合nginx 世界的 location 是异常强大的,毕竟 nginx 的主要应用场景是在负载均衡、API server,在不同 server、location 之间跳转更...

linux中多文件按行拼接整合命令paste

概念Linux下的paste命令主要用于从多个文件(包括标准输入)中读取内容,将每个文件的对应行用指定分隔符(默认tab制表符)拼接起来并打印到标准输出,我们可以使用重定向命令“>”将输出结果保...

记一次laravel项目因opcache导致的include过慢问题

问题表现 php-fpm-slow.log 大量如下日志:script_filename = /data/nginx/webroot/app-20200611-160330-feb...

进程间通信的方式

进程间通信的方式

1.管道    管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。    1.匿名管道:  ...






TCP(Transmission Control Protocol) 传输控制协议

三次握手

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:

SYN(synchronous建立联机) 同步报文段

ACK(acknowledgement 确认)

PSH(push传送)

FIN(finish结束) 结束报文段

RST(reset重置) 复位报文段

URG(urgent紧急) 紧急指针

Sequence number(顺序号码)

Acknowledge number(确认号码)

客户端TCP状态迁移:

CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED

服务器TCP状态迁移:

CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED


各个状态的意义如下: 

LISTEN - 侦听来自远方TCP端口的连接请求; 

SYN-SENT -在发送连接请求后等待匹配的连接请求; 

SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 

ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; 

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

FIN-WAIT-2 - 从远程TCP等待连接中断请求; 

CLOSE-WAIT - 等待从本地用户发来的连接中断请求; 

CLOSING -等待远程TCP对连接中断的确认; 

LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; 

TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; 

CLOSED - 没有任何连接状态;


TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图1所示。

(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。

图1 TCP三次握手建立连接  


TCP协议中的三次握手和四次挥手

理解:窗口和滑动窗口TCP的流量控制TCP使用窗口机制进行流量控制什么是窗口?连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端接收方发送的确认信息中包含了自己剩余的缓冲区...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。