当前位置: 首页 > article >正文

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_t 类型

 

ngx_cycle_t

定义在 src/core/ngx_core.h 

typedef struct ngx_cycle_s           ngx_cycle_t;

 


ngx_cycle_s

定义在 src/core/ngx_cycle.h

struct ngx_cycle_s {
    void                  ****conf_ctx;
    ngx_pool_t               *pool;
 
    ngx_log_t                *log;
    ngx_log_t                 new_log;
 
    ngx_uint_t                log_use_stderr;  /* unsigned  log_use_stderr:1; */
 
    ngx_connection_t        **files;
    ngx_connection_t         *free_connections;
    ngx_uint_t                free_connection_n;
 
    ngx_module_t            **modules;
    ngx_uint_t                modules_n;
    ngx_uint_t                modules_used;    /* unsigned  modules_used:1; */
 
    ngx_queue_t               reusable_connections_queue;
    ngx_uint_t                reusable_connections_n;
    time_t                    connections_reuse_time;
 
    ngx_array_t               listening;
    ngx_array_t               paths;
 
    ngx_array_t               config_dump;
    ngx_rbtree_t              config_dump_rbtree;
    ngx_rbtree_node_t         config_dump_sentinel;
 
    ngx_list_t                open_files;
    ngx_list_t                shared_memory;
 
    ngx_uint_t                connection_n;
    ngx_uint_t                files_n;
 
    ngx_connection_t         *connections;
    ngx_event_t              *read_events;
    ngx_event_t              *write_events;
 
    ngx_cycle_t              *old_cycle;
 
    ngx_str_t                 conf_file;
    ngx_str_t                 conf_param;
    ngx_str_t                 conf_prefix;
    ngx_str_t                 prefix;
    ngx_str_t                 error_log;
    ngx_str_t                 lock_file;
    ngx_str_t                 hostname;
};

 


它用于管理 Nginx 的运行时上下文,包含了 Nginx 在运行过程中所需的各种资源和配置信息 

它的主要作用包括:

  1. 管理模块配置 :存储各个模块的配置上下文。
  2. 管理内存池 :提供内存分配和释放的功能。
  3. 管理日志系统 :记录运行时的日志信息。
  4. 管理连接和事件 :处理客户端连接和事件驱动模型。
  5. 管理监听端口和文件 :存储监听套接字、打开的文件等信息。
  6. 支持动态更新 :在重新加载配置时,保存旧的上下文以便平滑切换。

 


成员变量详解

1. 配置相关
  • void ****conf_ctx;

    • 含义 : 指向一个四维指针数组,用于存储各个模块的配置上下文。
    • 作用 : 每个模块可以通过 conf_ctx 访问自己的配置数据。
    • 背景 : Nginx 的模块化设计使得每个模块可以有自己的配置结构,conf_ctx 是这些配置的统一入口。
  • ngx_str_t conf_file;

    • 含义 : 配置文件的路径。
    • 作用 : 指定 Nginx 使用的主配置文件(如 nginx.conf)。
  • ngx_str_t conf_param;

    • 含义 : 命令行传递的额外配置参数。
    • 作用 : 允许通过命令行覆盖部分配置。
  • ngx_str_t conf_prefix;

    • 含义 : 配置文件的前缀路径。
    • 作用 : 用于解析相对路径的配置文件。
  • ngx_str_t prefix;

    • 含义 : Nginx 安装目录的前缀路径。
    • 作用 : 用于定位安装目录下的文件(如日志文件、锁文件等)。

2. 内存管理
  • ngx_pool_t *pool;
    • 含义 : 内存池对象。
    • 作用 : 提供高效的内存分配和释放功能,避免频繁调用系统级别的 mallocfree

3. 日志系统
  • ngx_log_t *log;

    • 含义 : 当前使用的日志对象。
    • 作用 : 用于记录运行时的日志信息。
  • ngx_log_t new_log;

    • 含义 : 新的日志对象。
    • 作用 : 在重新加载配置时,可能会创建新的日志对象。
  • ngx_uint_t log_use_stderr;

    • 含义 : 是否将日志输出到标准错误(stderr)。
    • 作用 : 控制日志的输出方式。

4. 连接与事件管理
  • ngx_connection_t **files;

    • 含义 : 文件描述符到连接对象的映射表。
    • 作用 : 快速查找某个文件描述符对应的连接。
  • ngx_connection_t *free_connections;

    • 含义 : 空闲连接链表。
    • 作用 : 管理未被使用的连接对象,提高连接复用效率。
  • ngx_uint_t free_connection_n;

    • 含义 : 空闲连接的数量。
    • 作用 : 统计当前可用的空闲连接数。
  • ngx_connection_t *connections;

    • 含义 : 所有连接对象的数组。
    • 作用 : 管理所有活动的连接。
  • ngx_event_t *read_events;

    • 含义 : 读事件数组。
    • 作用 : 存储所有读事件。
  • ngx_event_t *write_events;

    • 含义 : 写事件数组。
    • 作用 : 存储所有写事件。

5. 模块管理
  • ngx_module_t **modules;

    • 含义 : 模块数组。
    • 作用 : 存储所有已加载的模块。
  • ngx_uint_t modules_n;

    • 含义 : 模块数量。
    • 作用 : 统计已加载的模块总数。
  • ngx_uint_t modules_used;

    • 含义 : 模块是否已被使用。
    • 作用 : 标记模块的状态。

6. 可复用连接管理
  • ngx_queue_t reusable_connections_queue;

    • 含义 : 可复用连接队列。
    • 作用 : 管理可复用的连接,提高连接复用效率。
  • ngx_uint_t reusable_connections_n;

    • 含义 : 可复用连接的数量。
    • 作用 : 统计当前可复用的连接数。
  • time_t connections_reuse_time;

    • 含义 : 连接复用的时间限制。
    • 作用 : 控制连接复用的时间窗口。

7. 监听与文件管理
  • ngx_array_t listening;

    • 含义 : 监听端口数组。
    • 作用 : 存储所有监听的套接字信息。
  • ngx_array_t paths;

    • 含义 : 路径数组。
    • 作用 : 存储需要监控的路径(如临时文件路径)。
  • ngx_list_t open_files;

    • 含义 : 打开的文件列表。
    • 作用 : 管理所有打开的文件。
  • ngx_list_t shared_memory;

    • 含义 : 共享内存列表。
    • 作用 : 管理共享内存区域。

8. 动态更新支持
  • ngx_cycle_t *old_cycle;
    • 含义 : 旧的 cycle 对象。
    • 作用 : 在重新加载配置时,保存旧的上下文以便平滑切换。

9. 锁与主机名
  • ngx_str_t lock_file;

    • 含义 : 锁文件路径。
    • 作用 : 用于进程间同步。
  • ngx_str_t hostname;

    • 含义 : 主机名。
    • 作用 : 存储当前服务器的主机名。

  


 

 

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 


http://www.kler.cn/a/548854.html

相关文章:

  • DeepSeek辅助测试测试一 -- DeepSeek加MaxKB知识库本地部署
  • 如何通过AI轻松制作PPT?让PPT一键生成变得简单又高效
  • 一键终结环境配置难题:ServBay 1.9 革新 AI 模型本地部署体验
  • HTML5 起步
  • 「AI学习笔记」机器学习与深度学习的区别:从技术到产品的深度解析(四)...
  • IoTDB 节点宕机后集群恢复
  • 轻量级分组加密算法RECTANGLE
  • AWS SES 投诉率问题全面解析及解决方案
  • 2024各地低空经济政策汇编资料
  • Deepseek高效使用指南
  • DeepSeek开启AI办公新模式,WPS/Office集成DeepSeek-R1本地大模型!
  • 文心快码|AI重构开发新范式,从工具到人机协同
  • 建筑行业安全技能竞赛流程方案
  • PyTorch 深度学习项目结构及nn.Module介绍
  • Python 内置函数 isinstance
  • 量子计算的五大优势
  • C++ 中的 `std::function`、`std::bind`、lambda 表达式与类型擦除
  • 在Windows系统上测试safari浏览器的兼容性
  • C++上机_日期差值
  • NAC网络接入控制三种认证方式802.1X认证、MAC认证和Portal认证