nginx 架构入门

文章目录

1、概述
2、nginx 进程模型
3、进程模型代码介绍

1、概述

    本帖讲解 nginx 框架代码及框架工作的基本流程。

2、nginx 进程模型

    nginx 在启动后,会有一个 master 进程和多个 worker 进程。master 进程主要用来管理 worker 进程,包含:接收来自外界的信号,向各 worker 进程发送信号,监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动重新启动新的 worker 进程。而基本的网络事件,则是放在 worker 进程中来处理了。多个 worker 进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个 worker 进程中处理,一个 worker 进程,不可能处理其它进程的请求。 worker 进程的个数是可以设置的,一般我们会设置与机器 cpu 核数一致,这里面的原因与 nginx 的进程模型以及事件处理模型是分不开的。nginx 的进程模型,可以由下图来表示:

这里写图片描述


3、进程模型代码介绍

    main 函数进入主进程,通过配置文件配置的进程数,fork 出工作进程,详细过程如下:

(1)nginx 程序入口位置
nginx-1.9.12/src/core/nginx.c:187 -- main(int argc, char *const *argv),nginx 程序入口。
(2)master 进程入口
nginx-1.9.12/src/core/nginx.c:367 -- ngx_master_process_cycle(cycle),进入 master 进程函数,开始相关初始化工作及后续 workprocess 的建立工作。
(3)workprocess 进程创建及工作流程代码层次介绍
nginx-1.9.12/src/os/unix/ngx_process_cycle.c:234 -- ngx_start_worker_processes(cycle, ccf->worker_processes,进入 workprocess 创建函数;
nginx-1.9.12/src/os/unix/ngx_process_cycle.c:358 -- ngx_spawn_process(cycle, ngx_worker_process_cycle 创建一个 workprocess,然后进入 ngx_worker_process_cycle 指针指向函数进行循环等待事件发生;
nginx-1.9.12/src/os/unix/ngx_process_cycle.c:358 -- ngx_process_events_and_timers(cycle),事件等待及处理函数入口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值