我正在尝试调整各种 TCP 设置以实现大量传出客户端连接。我已将以下内容放入 Ubuntu 16.04 上的 /etc/sysctl.conf 中。
net.ipv4.ip_local_port_range = 18000 65535 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 3
我已经应用了它们,sysctl -p
然后我使用 netcat 与我的一台服务器建立了新连接,然后终止了它:
nc 35.158.221.XXX 22
然后我使用以下命令检查了 netstat:
netstat -on | grep TIME_WAIT | less
在每种情况下,连接都会在 3 秒内正确删除。
现在问题是:
在上面之后不久,我启动了一个 python 脚本,其中有很多线程产生传出的 http 连接。然而,在此脚本中,连接的 TIME_WAIT 状态在默认的 60 秒后仍然到期。
为什么会发生这种情况并且 python 的连接忽略内核设置?这怎么可能呢?为什么该设置没有应用于此过程?我是否忘记刷新一些缓存或其他东西?