nginx进程管理==> master + 多个worker进程
master进程:全局的初始化 和管理 worker进程
worker进程:主要业务逻辑,事件处理
通信:socketpair ==> 每次fork完一个子进程后都把句柄传给前面已经存在的进程,以达到子进程间通信

nginx有多进程启动和单进程启动
这里写图片描述

主要分析多进程启动: nginx中的fork在ngx_spawn_process函数中进行 ngx_pid_t ngx_spawn_process(ngx_cycle_t *cycle, ngx_spawn_proc_pt proc,void *data,char *name, ngx_int_t respawn) 第一个参数是全局的配置,第二个参数是子进程需要执行的函数,第三个参数是proc的参数,第四个类型/*作用:: 1 有一个ngx_processes全局数组,包含了所有的存货的子进程,这里会fork出来的子进程放入到相应的位置。 并设置这个进程的相关属性。 2 创建socketpair,并设置相关属性。 3 在子进程中执行传递进来的函数。 */  nginx进程结构:typedefstruct  {     ngx_pid_t            pid;//进程的IDint                  status;//进程的退出状态     ngx_socket_t         channel[2];//用于socketpair通信的一对socket句柄     ngx_spawn_proc_pt    proc;//进程的执行函数void                 *data;//proc的参数char                 *name;//进程的title标识unsigned             respawn:1;//进程的状态:重新创建的unsigned             just_spawn:1;//进程的状态: 第一次创建的unsigned             detached:1;//进程的状态: 分离的,独立的unsigned             exiting:1;//进程的状态: 正在退出的unsigned             exited:1;//进程的状态: 已经退出的 } ngx_process_t;(src/os/unix/ngx_process.h)  master每创建一个worker都会把一个设置好的ngx_process_t结构变量放入ngx_processes中,新创建的进程存放在ngx_process_slot位置(遍历数组,查看是否空闲id == -1)   master进程向worker子进程发送命令是通过socketpair创建的一对socket实现的,之间传输的是ngx_channel_t结构变量:typedefstruct  {      ngx_uint_t  command;//发送的命令      ngx_pid_t   pid;//发送方进程的进程id      ngx_int_t   slot;//发送方进程在进程表中偏移位置      ngx_fd_t    fd;//发送给对方的文件句柄 } ngx_channel_t;(src/os/unix/ngx_channel.h)

这里写图片描述

上一个:weak_ptr介绍

热门文章

动物疫苗接种方法及注意事项有哪些呢图片大全(动物疫苗接种方式)

摘要: 今天给各位分享动物疫苗接种方法及注意事项有哪些呢图片大全的知识,其中也会对动物疫苗接种方式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、.

宠物粮食代加工骗局案例 宠物粮食代加工骗局案例分析

摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于宠物粮食代加工骗局案例的问题,于是小编就整理了4个相关介绍宠物粮食代加工骗局案例的解答,让我们一起看看吧。文明重启加工宠物粮食怎

3月3日更新20.5M/S,2025年最新高速Clash/Shadowrocket/SSR/V2ray订阅链接免费节点地址分享

这一次的节点更新覆盖了香港、日本、韩国、加拿大、美国、欧洲、新加坡等地区,最高速度可达20.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

3月30日更新19.7M/S,2025年最新高速SSR/Shadowrocket/Clash/V2ray订阅链接免费节点地址分享

这一次的节点更新覆盖了香港、新加坡、美国、韩国、加拿大、欧洲、日本等地区,最高速度可达19.7 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

4月9日更新21.7M/S,2025年最新高速Clash/SSR/V2ray/Shadowrocket订阅链接免费节点地址分享

这一次的节点更新覆盖了日本、加拿大、欧洲、新加坡、韩国、香港、美国等地区,最高速度可达21.7 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

3月27日更新19.5M/S,2025年最新高速Shadowrocket/V2ray/SSR/Clash订阅链接免费节点地址分享

这一次的节点更新覆盖了韩国、美国、欧洲、香港、日本、新加坡、加拿大等地区,最高速度可达19.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

C# DataTable去重,根据列名去重保留其他列

//去掉重复行 DataView dv = table.DefaultView; table = dv.ToTable(true, new string[] { "name", "code" });

4月26日更新21.8M/S,2025年最新高速SSR/Shadowrocket/Clash/V2ray订阅链接免费节点地址分享

这一次的节点更新覆盖了韩国、加拿大、美国、新加坡、香港、欧洲、日本等地区,最高速度可达21.8 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

动物疫苗的保管与使用 动物疫苗的保管与使用实验报告

摘要: 大家好,今天小编关注到一个比较有意思的话题,就是关于动物疫苗的保管与使用的问题,于是小编就整理了4个相关介绍动物疫苗的保管与使用的解答,让我们一起看看吧。宠物疫苗如何保存与运输?宠

动物疫病防控工作总结(动物疫病防疫工作)

摘要: 今天给各位分享动物疫病防控工作总结的知识,其中也会对动物疫病防疫工作进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、动物防疫工作自我总结..

归纳