解决 “TCP: time wait bucket table overflow” 问题
•
Freeshell 一个服务接受了大量的 HTTP 连接,主机的 syslog 中出现大量 “TCP: time wait bucket table overflow” 信息。这是因为有大量 TIME_WAIT 状态的 TCP 连接。
根据 TCP 协议,连接终止后一段时间内端口号不允许重用,以避免已关闭连接后到达的乱序数据包影响新的连接。这个值默认是 60 秒。事实上,一个乱序数据包在网络中停留不了这么长时间,而且恰好与新连接的端口号和序号重合的概率也很小。因此我们把这个值改成了 5 秒,以便及时释放已关闭连接的资源。
同时还把本地外发连接的端口范围扩大到了 1024 ~ 65535,可用端口号增加了一倍。
net.ipv4.tcp_fin_timeout=5
net.ipv4.ip_local_port_range=1024 65535