I'm playing around with tuning various tcp settings for high number of outgoing client connections. I've put following in my /etc/sysctl.conf on Ubuntu 16.04.

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

I've applied them using sysctl -p then i made a new connection to one of my servers using netcat then terminated it:

nc 35.158.221.XXX 22

Then i checked netstat using following command :

netstat -on | grep TIME_WAIT | less

In every situation, the connection was removed correctly within 3 seconds period.

Now the problem:

Shortly after above, i've started a python script with a lot of threads spawning outgoing http connections. In this script however, the connections' TIME_WAIT state is expiring STILL after default number of 60 seconds.


Any reason why is this happening and python's connections are ignoring the kernel setting? How is that even possible? Why the setting is not being applied to this process? Did i forget about flushing some cache or anything?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.