浅谈nginx内存池(四)

本文深入探讨了Nginx中用于HTTP数据处理的缓冲区数据结构,包括ngx_chain_t链表和ngx_buf_t。内容涵盖缓冲区链表如何在内存池上管理,如何创建buf以及其内存分配策略。了解这些对于优化Nginx性能至关重要。
摘要由CSDN通过智能技术生成
1.Nginx的buf缓冲区数据结构,主要用来存储非常大块的内存,ngx_buf_s数据结构也贯穿了整个nginx。

Nginx的缓冲区设计也是非常灵活的:
(1)可以自定义管理业务层面的缓冲区链表。
(2)可以将空闲的缓冲区链表交还给内存池pool->chain结构。

缓冲区ngx_buf_t是nginx处理大数据的关键数据结构,他既应用于内存数据,也应用于磁盘数据。

下面就是关于nginx中buf的实现
---------->buf分为两种类型:
(1)一种是file;
(2)一种是memory;
我们发送往套接字或者其他的设备发送东西时,我们是先将数据放大buf中,然后当设备或者套接字准备好了,我们就会从buf中读取。
ngx_buf_s具体结构如下:
struct ngx_buf_s {
u_char *pos;//待处理数据的开始标记(表示已经执行的数据的位置)

///last和上面内存池中last一样,也就是使用的内存的最后一个字节的指针
u_char *last;//待处理数据的结尾标记

///文件指针(处理文件时,待处理文件的开始标记和结尾标记)
off_t file_pos;
off_t file_last;

///buf的开始指针(缓冲区开始的指针地址和缓冲区结尾的指针地址)
u_char *start; /* start of buffer */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值