![TCP 堆栈调整,(TIME_WAIT) - python 进程忽略 sysctl 设置?](https://linux22.com/image/130262/TCP%20%E5%A0%86%E6%A0%88%E8%B0%83%E6%95%B4%EF%BC%8C(TIME_WAIT)%20-%20python%20%E8%BF%9B%E7%A8%8B%E5%BF%BD%E7%95%A5%20sysctl%20%E8%AE%BE%E7%BD%AE%EF%BC%9F.png)
我正在尝试调整各种 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 的连接忽略内核设置?这怎么可能呢?为什么该设置没有应用于此过程?我是否忘记刷新一些缓存或其他东西?