Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(7)
详解(7)
初始化可重用连接队列
ngx_queue_init(&cycle->reusable_connections_queue);
初始化可重用连接队列:
将 cycle->reusable_connections_queue
初始化为一个空的双向链表(队列),用于管理可重用的空闲连接(ngx_connection_t
)。
ngx_queue_t
是 Nginx 的双向链表节点结构
ngx_queue_init(q)
宏会将队列的 prev
和 next
指针均指向自身,表示队列为空。
队列用途:
reusable_connections_queue
存储当前未被使用的连接对象(如已关闭的 TCP 连接),这些连接可被重新分配以避免频繁创建/销毁的开销。
频繁调用 accept()
创建新连接会导致性能下降,而重用空闲连接可显著降低延迟。
资源复用:
当连接关闭时,Nginx 不会立即释放其资源(如套接字、内存),而是将其放入 reusable_connections_queue
,等待后续请求复用。
在内存紧张时,可通过调整队列大小(worker_connections
)动态平衡资源。
ngx_queue_init