You need to enable JavaScript to run this app.
导航

在Linux操作系统中调优net.ipv4.tcp_max_tw_buckets参数配置

最近更新时间2024.01.04 19:43:59

首次发布时间2024.01.02 15:33:39

本文主要介绍如何在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连接最大数量。
  1. 在目标Linux实例中执行如下命令,使用proc接口临时配置net.ipv4.tcp_max_tw_buckets参数值。
    echo 20000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
    
  2. 请执行如下命令,查看当前参数值。
    cat /proc/sys/net/ipv4/tcp_max_tw_buckets
    

方式二:通过sysctl.conf文件配置

说明

  • 本方式支持在系统运行中修改并生效配置,且重启操作系统后将继续生效,无需重新配置。
  • 请将命令中20000,替换为您期望的可同时处于TIME_WAIT状态TCP连接最大数量。
  1. 在目标Linux实例中执行如下命令,打开sysctl.conf文件。
    vim /etc/sysctl.conf
    
  2. i键进入编辑模式。
  3. 在文件中修改net.ipv4.tcp_max_tw_buckets参数值。
  4. esc键,输入:wq保存并退出文件。
  5. 执行如下命令,使配置生效。
    sysctl -p