[转帖]CONNTRACK_MAX和HASHSIZE

conntrack,max,hashsize · 浏览次数 : 0

小编点评

**关于 Linux 中 `CONNTRACK_MAX` 和 `HASHSIZE` 的注意点:** **`CONNTRACK_MAX`:** * 在压力测试中,并发数增加时,无法完成测试,可以尝试调整 `CONNTRACK_MAX` 参数。 * `CONNTRACK_MAX` 的默认值取决于系统的 RAM大小,一般情况下设置为 `RAMSIZE (以 byte 的值) / 16384` 或 `RAMSIZE (以 MegaBytes 的值) * 64`。 * 建议 `CONNTRACK_MAX` 设置成一个合理的数值,例如 `128` 或 `256`,以避免内存限制。 **`HASHSIZE`:** * 存储连接条目列表的哈西表大小。 * 默认值为 `CONNTRACK_MAX * 8`,即每个链接的列表平均包含 `8` 个 `conntrack` 条目。 * 建议 `HASHSIZE` 设置成一个合理的数值,例如 `16` 或 `32`,以避免内存消耗。 **其他重要参数:** * `net.ipv4.netfilter.ip_conntrack_max` 和 `net.ipv4.netfilter.ip_conntrack_tcp_timeout_established`:控制连接跟踪条目的数量和超时时间。 * `net.nf_conntrack_max` 和 `net.nf_conntrack_tcp_timeout_established`:控制 `nf_conntrack` 模块的连接跟踪数量和超时时间。

正文

关于linux中的CONNTRACK_MAX和HASHSIZE要注意的地方
 
如果在压力测试的时候,并发数增大,但无法完成测试,可以尝试调整下参数: 
 
vi /etc/sysctl.conf 
在kernel2.6之前的添加项: 
net.ipv4.netfilter.ip_conntrack_max = 655360 
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180 
 
kernel2.6之后的添加项: 
net.nf_conntrack_max = 655360   # net.nf_conntrack_max = 655360 也可以 
net.netfilter.nf_conntrack_tcp_timeout_established = 1200 
 
sysctl -p /etc/sysctl.conf 
如果报错:error: "net.nf_conntrack_max" is an unknown key 则需要使用modprobe载入ip_conntrack模块,lsmod查看模块已载入。 
modprobe   ip_conntrack 
 
关于 
--CONNTRACK_MAX 允许的最大跟踪连接条目,是在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目)
      --HASHSIZE 存储跟踪连接条目列表的哈西表的大小 
 
CONNTRACK_MAX和HASHSIZE的默认值 
      一般来说,CONNTRACK_MAX和HASHSIZE都会设置在“合理”使用的值上,依据可使用的RAM的大小来计算这个值。 
 
CONNTRACK_MAX的默认值 
      在i386架构上,CONNTRACK_MAX = RAMSIZE (以bytes记) / 16384 =RAMSIZE (以MegaBytes记) * 64,因此,一个32位的带512M内存的PC在默认情况下能够处理512*1024^2/16384 = 512*64 = 32768个并发的netfilter连接。 
      但是真正的公式是:CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (x / 32) 这里x是指针的bit数,(例如,32或者64bit) 
 
请注意: 
      -默认的CONNTRACK_MAX值不会低于128 
      -对于带有超过1G内存的 系统,CONNTRACK_MAX的默认值会被限制在65536(但是可以手工设置成更大的值) 
 
HASHSIZE的默认值 
      通常,CONNTRACK_MAX = HASHSIZE * 8。这意味着每个链接的列表平均包含8个conntrack的条目(在优化的情况并且CONNTRACK_MAX达到的情况下),每个链接的列表就是一个哈西表条目(一个桶)。 
      在i386架构上,HASHSIZE = CONNTRACK_MAX / 8 =RAMSIZE (以bytes记) / 131072 = RAMSIZE (以MegaBytes记) * 8。举例来说,一个32位、带512M内存的PC可以存储512*1024^2/128/1024 =512*8 = 4096 个桶(链接表) 
      但是真正的公式是:HASHSIZE = CONNTRACK_MAX / 8 = RAMSIZE (以bytes记) / 131072 / (x / 32)这里x是指针的bit数,(例如,32或者64bit) 
 
请注意: 
      -默认HASHSIZE的值不会小于16 
      -对于带有超过1G内存的系统,HASHSIZE的默认值会被限制在8192(但是可以手工设置成更大的值) 

与[转帖]CONNTRACK_MAX和HASHSIZE相似的内容:

[转帖]CONNTRACK_MAX和HASHSIZE

关于linux中的CONNTRACK_MAX和HASHSIZE要注意的地方 如果在压力测试的时候,并发数增大,但无法完成测试,可以尝试调整下参数: vi /etc/sysctl.conf 在kernel2.6之前的添加项: net.ipv4.netfilter.ip_conntrack_max =

[转帖]iptables ip_conntrack_max 调整

https://www.diewufeiyang.com/post/583.html 一、概念 -允许的最大跟踪连接条目:CONNTRACK_MAX(默认值是 2^16=65536 ) -存储跟踪连接条目列表的哈西表的大小:HASHSIZE -每个哈西表的条目(叫一个bucket),包含了一个链接起

[转帖]linux中内核的一个不错的参数somaxconn

最近发现很多内核优化参数都记不住了,写下文章来备记,方便以后查看. 编辑 /etc/sysctl.conf 文件,在里面加入如下内容:(有注释) #设置系统对最大跟踪的TCP连接数的限制(CentOS 5.6无此参数) net.ipv4.ip_conntrack_max = 25000000 #最大

[转帖]Linux conntrack模块,ip_conntrack 模块的作用

ip_conntrack 是Linux NAT一个跟踪连接条目的模块记录着允许的跟踪连接条目ip_conntrack 模块会记录 tcp 通讯协议的 established connection 记录, 而且预设 timeout 时间长达五天 (432,000 秒).所以局域网中当有人使用p2p类的

[转帖]你真的了解nf_conntrack么?

https://blog.51cto.com/u_15293891/3290242 女主宣言 该文章出自HULK虚拟化团队(网络小分队),主要是基于在奥创版本升级过程中遇到的一个nf_conntrack问题展开的。该问题在日常开启了iptables的高并发运维场景中也会经常出现。该文章主要是结合实际

[转帖]Linux内核参数之nf_conntrack

https://www.jianshu.com/p/d2b28703e376 问题描述 近日线下测试环境的一个cloudstack计算节点上的虚拟机出现频繁的丢包情况,经过排查日志发现这个计算节点的包被丢弃,日志信息如下: Oct 29 16:18:14 a2 kernel: __ratelimit

[转帖]Linux内核参数之nf_conntrack

https://www.jianshu.com/p/d2b28703e376 问题描述 近日线下测试环境的一个cloudstack计算节点上的虚拟机出现频繁的丢包情况,经过排查日志发现这个计算节点的包被丢弃,日志信息如下: Oct 29 16:18:14 a2 kernel: __ratelimit

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、