背景:
tcp_tw_recycle
参数用于快速回收 TIME-WAIT 状态的连接。然而,在某些情况下,这个参数可能会导致 PAWS 丢包问题,特别是当网络中存在 NAT(网络地址转换)时。因此,通常建议将其关闭。下面是如何关闭
tcp_tw_recycle
并配置 tcp_tw_bucket
的步骤。操作步骤
关闭 tcp_tw_recycle
临时关闭
sudo sysctl -w net.ipv4.tcp_tw_recycle=0
永久关闭
1. 编辑
/etc/sysctl.conf
文件,添加或修改以下行:net.ipv4.tcp_tw_recycle = 0
2. 然后使配置生效:
sudo sysctl -p
配置 tcp_tw_bucket
tcp_tw_bucket
参数用于设置 TIME-WAIT 状态的连接桶的数量。增加这个值可以帮助系统更好地处理大量 TIME-WAIT 状态的连接。临时配置
sudo sysctl -w net.ipv4.tcp_max_tw_buckets=4096
永久配置
1. 编辑
/etc/sysctl.conf
文件,添加或修改以下行:net.ipv4.tcp_max_tw_buckets = 4096
2. 然后使配置生效:
sudo sysctl -p
其他相关优化
除了上述两个参数外,还有一些其他的内核参数可以帮助优化 TCP 连接处理:
增加文件描述符限制
sudo sysctl -w fs.file-max=100000
增加系统可打开的文件数
编辑
/etc/security/limits.conf
文件,添加或修改以下行:* soft nofile 65535* hard nofile 65535
增加系统可建立的最大连接数
sudo sysctl -w net.core.somaxconn=65535
增加半连接队列长度
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=65535
减少 TIME-WAIT 状态的超时时间
sudo sysctl -w net.ipv4.tcp_fin_timeout=15
验证配置
你可以使用以下命令来验证配置是否生效:
sysctl -a | grep tcp_twsysctl -a | grep file-maxsysctl -a | grep somaxconnsysctl -a | grep tcp_max_syn_backlogsysctl -a | grep tcp_fin_timeout
重启服务
如果你正在优化的是某个特定的服务(如 Web 服务器、数据库等),建议重启该服务以确保新的内核参数生效。