nginx 进程间通信

nginx 采用 master-worker模式工作时,多进程间的通信

unix域套接字通信

同一台机器上运行的进程之间一种常用的通信方式,应用于客户端和服务端之间的API,UNIX套接字效率高,仅复制数据并不执行协议处理,不添加删除网络报头,无需计算校验和,不需产生顺序号,没有确认报文需要发送,提供字节流与数据报俩种方式,数据报提供可靠服务

nginx采用unix套接字进行master与worker进程间的通信,nginx在创建worker进程时调用socketpair() 创建未命名的unix套接字 将创建的channel0分配给master进行,将channel1分配给worker进程,子进程继承了父进程master进程的资源,master与worker知道彼此间的channel端口,可以互相进行通信

内存共享

提高自身效率,共享内存,ngx_shm_zone_t,在配置文件中进行相关配置,每个模块都可以设置自己的共享内存,通常是master创建,fork子进程后,全部使用该内存中的数据

nginx slab机制

提高分配效率,减少碎片的产生,使用slab机制解决内部碎片,预分配,系统按照size对内存进行分类管理,当申请一块大小为size的内存时,分配器就从size集合中分配一个内存块block出去,当释放一个大小为size的内存时,将内存块放回到原有集合,不释放给操作系统,当又要申请相同大小的内存时,可以复用之前被回收的内存块(block),避免内存碎片的产生,size始终是2的幂次方,用户申请的内存大小小于2的幂次方,为用户分配一个大于用户申请值的最小适合单元,提高内存分配,回收,寻址的速度,称为对齐。

nginx 先分配实际内存,再用slab机制对每块共享内存进行内部划分和管理。

posted @ 2021-04-08 16:35  简直😓  阅读(317)  评论(0编辑  收藏  举报