main-初始化
·
1 逻辑流程
1 调试与错误映射初始化
1 ngx_debug_init() → 激活内部调试钩子与断言机制
2 ngx_strerror_init() → 绑定 OS errno 到可读描述字符串 (失败则退出)
2 命令行解析与版本信息
1 ngx_get_options() → 解析 argc/argv 提取 -c/-p/-g/-s 等参数 (失败则退出)
2 ngx_show_version 分支 → 打印编译版本信息,若非测试模式 (!ngx_test_config) 则直接 return 0
3 基础运行时组件初始化
1 ngx_max_sockets = -1 → 占位初始化 (TODO 标记,后续由 OS 探测覆盖)
2 ngx_time_init() → 建立时间缓存、时区基准与单调时钟
3 [条件编译] ngx_regex_init() → 初始化 PCRE 正则引擎上下文
4 ngx_pid / ngx_parent → 调用 getpid()/getppid() 获取当前与父进程 ID
5 ngx_log_init() → 创建日志对象、分配日志文件路径与句柄 (失败则退出)
4 [条件编译] SSL/TLS 加密库初始化
5 核心上下文初始化
1 ngx_memzero(&init_cycle) → 清零 ngx_cycle_t 结构体防历史脏数据污染
2 init_cycle.log = log → 将日志对象绑定至初始化上下文
3 ngx_cycle = &init_cycle → 设置全局指针指向 init_cycle
6 内存池创建
init_cycle.pool = ngx_create_pool(1024) → 分配 1KB 初始内存池 (失败则退出)
7 参数持久化
ngx_save_argv() → 持久化保存 CLI 参数至 cycle 上下文
8 基础路径设置
ngx_process_options() → 标准化配置路径、prefix 目录与 error_log 路径
9 OS 能力探测与底层依赖初始化
1 ngx_os_init() → 探测页大小/缓存行/最大 FD/并发限制等 OS 能力 ,设置进程标题环境,(失败则退出)
2 ngx_crc32_table_init() → 初始化 CRC32 哈希表 (严格依赖 os_init 获取的 cacheline_size)
3 ngx_slab_sizes_init() → 初始化 Slab 内存分配器尺寸分级 (严格依赖 os_init 获取的 pagesize)
4 ngx_add_inherited_sockets() → 接管父进程通过环境变量传递的监听 Socket (支持平滑热重启)
10 模块注册与预初始化
ngx_preinit_modules() → 将所有静态/动态模块指针注册至全局 ngx_modules 数组 (失败则退出)
11 创建完整的运行时周期对象
ngx_init_cycle
通过解析配置文件创建核心运行时环境(cycle)。
如果解析失败,则在测试模式下将错误输出到标准错误,并终止程序。
12 配置测试与转储
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)