FIN_WAIT_[1,2] and LAST_ACK

Andre Oppermann andre at freebsd.org
Mon Apr 5 15:02:54 PDT 2004


Brandon Erhart wrote:
> 
> Hello everyone,
> 
> I am writing a network application that mirrors a given website (such as a
> suped-up "wget"). I use a lot of FDs, and was getting connect() errors when
> I would run out of local_ip:local_port tuples. I lowered the MSL so that
> TIME_WAIT would timeout very quick (yes, I know, this is "bad", but I'm
> going for sheer speed here), and it alleviated the problem a bit.

You should enlarge the local port space especially on 4.9:

 sysctl -w net.inet.ip.portrange.hifirst=10000
 sysctl -w net.inet.ip.portrange.hilast=65535

Normal is 49152 which give you only 16383 ports to choose from.  And
with the number of connections you have you're running of them because
of the TIME_WAIT states.

-- 
Andre


> However, I have run into a new problem. I am getting a good amount of
> blocks stuck in FIN_WAIT_1, FIN_WAIT_2 or LAST_ACK that stick around for a
> long while. I have been unable to find must information on a timeout for
> these states. I came across a small patch that modified tcp_timer.c in
> /usr/src/sys/netinet. It changed line #484 (in FreeBSD 4.9-REL) from:
> 
> if (tp->t_state != TCPS_TIME_WAIT &&
> 
> to
> 
> if (tp->t_state < FIN_WAIT_2 &&
> 
> I also tried changing that to ".. <= FIN_WAIT_2 .."
> 
> However, I still end up with quite a few stuck in FIN_WAIT_1, FIN_WAIT_2 or
> LAST_ACK after the program exits (and whilst the program is running of
> course). They don't seem to timeout in the same interval that TIME_WAIT does.
> 
> Any ideas? Did I modify the right piece of code? I was told to post here as
> you all would more than likely know!
> 
> I am stumped.
> 
> Thank you all in advance,
> 
> Brandon
> 
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"


More information about the freebsd-net mailing list