You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

64位平台下Nginx存储TCP连接状态的内存占用大小是多少?

关于Nginx两个限流模块状态内存占用差异的说明

这不属于文档错误,两个模块标注的内存占用差异,本质是二者存储的状态数据结构完全不同,和共享键$binary_remote_addr无关。

差异来源说明

  • limit_conn_zone是连接数限流模块,它的状态条目只需要存储对应客户端IP的当前活跃连接计数,需要保存的元数据极少,算上哈希表节点开销、键存储开销,64位平台下单条状态固定占用64字节内存。
  • limit_req_zone是请求频率限流模块,它的状态条目需要存储漏桶算法运行所需的全部参数:包括客户端IP键、上次请求到达的精确时间戳、当前桶内剩余可用请求数、突发请求相关统计值等,元数据字段更多,算上哈希表节点开销后,64位平台下单条状态固定占用128字节内存。

常见认知误区澄清

两个文档中提到的状态占用大小,是「键存储+模块业务状态数据+共享内存哈希表结构开销」的总和,其中作为键的$binary_remote_addr长度是固定的:存储IPv4地址占4字节,存储IPv6地址占16字节,这部分在两个模块中完全一致,内存占用差完全来自模块自身业务数据的存储需求差异。
另外文档中提到不推荐用$remote_addr做键,是因为这个变量存的是字符串格式的IP地址,长度在7-15字节之间浮动,还要额外存储字符串长度、指针等元数据,内存开销比二进制格式的$binary_remote_addr高很多,相同大小的共享内存能存储的条目数更少。

64位平台下的状态占用结论

不存在统一的TCP连接状态内存占用值,要对应到具体模块判断:

  • 对limit_conn_zone的连接计数状态:单条固定占64字节
  • 对limit_req_zone的请求限流状态:单条固定占128字节

内容的提问来源于stack exchange,提问作者Lorraine1996

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 03:18:27