👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
本文主要介绍如何在Linux操作系统中,修改net.ipv4.tcp_max_tw_buckets参数的大小。
关于net.ipv4.tcp_max_tw_buckets参数
该参数用于控制系统中同时保持TIME_WAIT状态的socket连接最大数量,该值在默认情况下,大小为总内存(MB)*4。当实例中处于TIME_WAIT状态的连接数量超过最大数量时,内核将会关闭超出部分的TCP连接,并在/var/log/messages日志中提示告警信息TCP: time wait bucket table overflow。
操作场景
由于不同业务场景TCP连接数量不同,为避免资源浪费、业务受到影响,您可以按实际业务场景调整net.ipv4.tcp_max_tw_buckets参数值。
若业务中TCP连接数量大,需要存在较多TIME_WAIT状态的TCP连接时,您可以尝试增大本参数值。
若业务中处于TIME_WAIT状态的TCP连接数量异常多,导致系统执行缓慢,服务卡顿,甚至业务中断,您可以尝试减小本参数值。
操作步骤
步骤一:查询当前参数值
在目标Linux实例中执行如下命令,查看系统当前配置的可同时处于TIME_WAIT状态TCP连接最大数量。
cat /proc/sys/net/ipv4/tcp_max_tw_buckets
回显示例如下,表示当前最大可同时存在5000个处于TIME_WAIT状态TCP连接。
步骤二:查询可配置范围
在目标Linux实例中执行如下命令,查询Linux随机分配端口的范围。
说明
Linux对外的随机分配端口理论最大值为65535,排除保留、被占用端口外,可用值约为60000,因此设置tcp_max_tw_buckets参数值的大小不应大于该范围值。
cat /proc/sys/net/ipv4/ip_local_port_range
回显示例如下,表示端口可用区间为[32768,60999],net.ipv4.tcp_max_tw_buckets参数配置可配置的理论最大值为 60999 - 32768 + 1 = 28238。
步骤三:修改参数配置
方式一:通过proc接口配置
说明
本方式支持在系统运行中修改并生效配置,但重启操作系统后将失效,需要重新配置。
请将命令中20000,替换为您期望的可同时处于TIME_WAIT状态TCP连接最大数量。
在目标Linux实例中执行如下命令,使用proc接口临时配置net.ipv4.tcp_max_tw_buckets参数值。
echo 20000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
请执行如下命令,查看当前参数值。
cat /proc/sys/net/ipv4/tcp_max_tw_buckets
方式二:通过sysctl.conf文件配置
说明
本方式支持在系统运行中修改并生效配置,且重启操作系统后将继续生效,无需重新配置。
请将命令中20000,替换为您期望的可同时处于TIME_WAIT状态TCP连接最大数量。
在目标Linux实例中执行如下命令,打开sysctl.conf文件。
vim /etc/sysctl.conf
按i键进入编辑模式。
在文件中修改net.ipv4.tcp_max_tw_buckets参数值。
按esc键,输入:wq按回车键,保存并退出文件。
执行如下命令,使配置生效。
sysctl -p