TIME_WAIT connections not being cleaned up after timeout period expires
        Posted  
        
            by 
                Mark Dawson
            
        on Server Fault
        
        See other posts from Server Fault
        
            or by Mark Dawson
        
        
        
        Published on 2011-08-22T05:54:31Z
        Indexed on 
            2012/09/24
            3:40 UTC
        
        
        Read the original article
        Hit count: 625
        
I am stress testing one of my servers by hitting it with a constant stream of new network connections, the tcp_fin_timeout is set to 60, so if I send a constant stream of something like 100 requests per second, I would expect to see a rolling average of 6000 (60 * 100) connections in a TIME_WAIT state, this is happening, but looking in netstat (using -o) to see the timers, I see connections like: 
TIME_WAIT   timewait (0.00/0/0)
where their timeout has expired but the connection is still hanging around, I then eventually run out of connections. Anyone know why these connections don't get cleaned up? If I stop creating new connections they do eventually disappear but while I am constantly creating new connections they don't, seems like the kernel isn't getting chance to clean them up? Is there some other config options I need to set to remove the connections as soon as they have expired?
The server is running Ubuntu and my web server is nginx.  Also it has iptables with connection tracking, not sure if that would cause these TIME_WAIT connections to live on.
Thanks Mark.
© Server Fault or respective owner