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. 配置相关
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;
- 含义 : 内存池对象。
- 作用 : 提供高效的内存分配和释放功能,避免频繁调用系统级别的
malloc和free。
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;
- 含义 : 主机名。
- 作用 : 存储当前服务器的主机名。
相关文章:
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 …...
WHERE子句中的条件
在SQL查询中,WHERE子句用于指定筛选条件,以限制从数据库表中检索出的数据行。WHERE子句通常位于SELECT、UPDATE、DELETE等SQL语句中,紧跟在FROM子句(对于SELECT语句)或其他相关子句之后。 一、WHERE子句的基本语法 sq…...
Effective Objective-C 2.0 读书笔记——内存管理(下)
Effective Objective-C 2.0 读书笔记——内存管理(下) 在 dealloc 方法中只释放引用并解除监听 对象在经历其生命期后 ,最终会为系统所回收 ,这时就要执行dealloc 方法了。 在每个对象的生命期内,此方法仅执行一次&a…...
[Spring Boot] Expense API 实现
[Spring Boot] Expense API 实现 项目地址:expense-api 项目简介 最近跟着视频做的一个 spring boot 的项目,包含了比较简单的记账功能的实现(只限 API 部分),具体实现的功能有: 记账(expen…...
Pell数列【一本通在线评测】
目录 描述 输入描述 输出描述 用例输入 1 用例输出 1 什么是pell数列 一、定义与递推关系 二、数学性质 三、应用领域 四、编程实现要点 五、扩展与相关概念 C代码实现 描述 Pell数列a1,a2,a3,...的定义是这样的,a11,a22,...,an2an−1a…...
linux ollama deepseek等大语言模型的model文件的存储目录
linux ollama deepseek等大语言模型的model文件的存储目录 一、用ollama serve启动的,模型数据存放在: /usr/share/ollama/.ollama/models二、如果在自启动文件中指定了工作目录,则在工作目录下的.ollama/models 1.自启动服务 /etc/system…...
【PyQt】工具栏(QToolBar)与动作按钮(QAction)使用指南
PyQt工具栏(QToolBar)与动作按钮(QAction)使用指南 🛠️ 一、基础用法示例 🌟 class MainWindow(QMainWindow):def __init__(self):super().__init__()# 创建工具栏 🔧self.toolbar self.addToolBar("主工具栏")# 创建动作集合 …...
软路由折腾 | OpenWrt安装后基础配置指南:联网设置与DNS优化
在PVE中安装OpenWrt教程 一、网络基础配置 1. 确认网络接口角色 OpenWrt旁路由通常仅需配置LAN口,无需WAN口。其流量通过主路由转发,因此需确保: 物理连接:OpenWrt的LAN口(如eth0)桥接到主路由的局域网&…...
设置默认构建变体 Build Variant
Android Studio在打开项目时有时会把我设置好的build Variant改为默认的变体,没注意的话可能打完包才发现打错了,浪费时间。因此,有必要通过代码设置一个我想要的默认变体。 代码其实很简单,只要在变体下面加上isDefault true即可…...
【大模型】DeepSeek使用与原理解析:从V3到R1
文章目录 一、引言二、使用与测评1.7大R1使用技巧2.官网实测 发展历程三、Deepseek MoE:专家负载均衡 (2024年1月)四、GRPO:群体相对策略优化(DeepSeek-Math,2024年4月)五、三代注意力ÿ…...
DAY04 Object、Date类、DateFormat类、Calendar类、Math类、System类
学习目标 能够说出Object类的特点是所有类的祖宗类,任意的一个类都直接或者间接的继承了Object类,都可以使用Object类中的方法Animal extends Object:直接继承Cat extends Animal:间接继承 能够重写Object类的toString方法altinsert,选择toString 能够重写Object类的equals方法…...
oracle 19c安装DBRU补丁时报错CheckSystemSpace的处理
oracle 19c的补丁目前已经发布到19.26版本了,数据库补丁安装也是数据库运维中的一个常见工作;近期在一个安装补丁的环境遇到了Prerequisite check "CheckSystemSpace" failed.错误,看起来是磁盘剩余空间不足的告警;按以…...
图像生成GAN和风格迁移
文章目录 摘要abstract1.生成对抗网络 GAN1.1 算法步骤 2.风格迁移2.1 损失函数2.2 论文阅读2.2.1 简介2.2.2 方法2.2.3 实验2.2.4 结论 3.总结 摘要 本周学习了生成对抗网络(GAN)与风格迁移技术在图像生成中的应用。首先介绍了GAN模型中生成器与判别器…...
golangAPI调用deepseek
目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…...
【第15章:量子深度学习与未来趋势—15.3 量子深度学习在图像处理、自然语言处理等领域的应用潜力分析】
一、开篇:为什么我们需要关注这场"量子+AI"的世纪联姻? 各位技术爱好者们,今天我们要聊的这个话题,可能是未来十年最值得押注的技术革命——量子深度学习。这不是简单的"1+1=2"的物理叠加,而是一场可能彻底改写AI发展轨迹的范式转移。 想象这样一个…...
JAVA安全—Shiro反序列化DNS利用链CC利用链AES动态调试
前言 讲了FastJson反序列化的原理和利用链,今天讲一下Shiro的反序列化利用,这个也是目前比较热门的。 原生态反序列化 我们先来复习一下原生态的反序列化,之前也是讲过的,打开我们写过的serialization_demo。代码也很简单&…...
LangChain大模型应用开发:提示词工程应用与实践
介绍 大家好,博主又来给大家分享知识了。今天给大家分享的内容是LangChain提示词工程应用与实践。 在如今火热的大语言模型应用领域里,LangChain可是一个相当强大且实用的工具。而其中的提示词(Prompt),更是我们与语言模型进行有效沟通的关…...
【数据结构入门 65 题】目录
目录 1 函数题2 编程题3 数据结构实现 1 函数题 6-1 单链表逆转 6-2~6-6 线性表基本操作 6-7 在一个数组中实现两个堆栈 6-8 求二叉树高度 6-9 二叉树的遍历 6-10 二分查找 6-11 先序输出叶结点 6-12 二叉搜索树的操作集 2 编程题 3 数据结构实现 栈和队列...
osgearth控件显示中文(八)
当前自己知道的方法大概有以下两种: (一)直接转成utf8 其实在前面的文章中已经有了。 osgEarth::Annotation::PlaceNode *pn = new osgEarth::Annotation::PlaceNode(GeoPoint(geoSRS, 110, 34), String2UTF8("中国"), style);std::wstring String2Wstring(con…...
2025 N1CTF crypto 复现
近一个月都没有学习了,一些比赛也没有打,很惭愧自己还是处在刚放假时的水平啊,马上开学了,抓紧做一些训练来康复。 CheckIn import os from Crypto.Util.number import * from secret import FLAGp, q getPrime(512), getPrime…...
Windows Defender Control--禁用Windows安全中心
Windows Defender Control--禁用Windows安全中心 链接:https://pan.xunlei.com/s/VOJDuy2ZEqswU4sEgf12JthZA1?pwdtre6#...
mount 出现 2038 问题
在 linux 上挂载 ext4 文件系统时出现了 2038 年问题,如下: [ 236.388500] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null) [ 236.388560] ext4 filesystem being mounted at /root/tmp supports timestamps until 2…...
langchain+不同模型api使用教程
目录 一、Langchainopenai1. gpt-4o2. o13. o3-mini 二、Anthropic1.claude-3-5-sonnet-latest 三、四、 一、Langchainopenai langchain_community 可能是一个较旧的库,或者它的版本与 OpenAI 的最新 API 不兼容。OpenAI 的 API 可能会更新,而 langcha…...
【第12章:深度学习与伦理、隐私—12.4 深度学习与伦理、隐私领域的未来挑战与应对策略】
凌晨三点的自动驾驶测试场,AI系统突然在暴雨中做出惊人决策——它选择撞向隔离带而不是紧急变道,因为算法推演发现隔离带后的应急车道站着五个工程师。这个惊悚的伦理困境,揭开了深度学习伦理危机最尖锐的冰山一角。 一、潘多拉魔盒已开:深度学习伦理的四大原罪 1.1 数据原…...
2. 图片性能优化
图片性能优化 图片懒加载 如何判断图片出现在了当前视口 (即如何判断我们能够看到图片)如何控制图片的加载 原生实现 <img src"shanyue.jpg" loading"lazy" />loading"lazy" 延迟加载图像,直到它和视…...
Java与DeepSeek的完美结合:开启高效智能编程新时代 [特殊字符]
一、DeepSeek:Java开发者的智能编程伙伴 🤖 1.1 DeepSeek是什么? DeepSeek是一款AI驱动的智能编程工具,通过深度学习和自然语言处理技术,为Java开发者提供: 智能代码补全:根据上下文预测代码 …...
RL--2
强化学习当中最难的两个点是: 1.reward delay; 2.agent的行为会影响到之后看到的东西,所以agent要学会探索世界; 关于强化学习的不同类型,可以分为以下三种: 一种是policy based:可以理解为它是…...
SpringMVC新版本踩坑[已解决]
问题: 在使用最新版本springMVC做项目部署时,浏览器反复500,如下图: 异常描述: 类型异常报告 消息Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [int] not specifie…...
2025 pwn_A_childs_dream
文章目录 fc/sfc mesen下载和使用推荐 fc/sfc https://www.mesen.ca/docs/ mesen2安装,vscode安装zg 任天堂yyds w d 左右移动 u结束游戏 i崩溃或者卡死了 L暂停 D658地方有个flag 发现DEEE会使用他。且只有这个地方,maybe会输出flag,应…...
pandas(11 分类数据和数据可视化)
前面内容:pandas(10 日期和Timedelta) 目录 一、Python Pandas 分类数据 1.1 pd.Categorical() 1.2 describe() 1.3 获取类别的属性 1.4 分类操作 1.5 分类数据的比较 二、Python Pandas 数据可视化 2.1 基础绘图:plot 2.2 条形图 2.3 直方…...
