Re: connect() returns EADDRINUSE during massive host->host conn rate
- From: Julian Elischer <julian@xxxxxxxxxxxx>
- Date: Wed, 28 Nov 2007 10:22:08 -0800
Jan Srzednicki wrote:
Hello,
I have a pair of hosts. One of them performs a massive amount of
TCP connections to the other one, all to the same port. This setup
mostly works fine, but from time to time (that varies, from once a
minute to one a half an hour), the connect(2) syscall fails with EADDRINUSE. The connection rate tops to 50 connection
so, what does netstat -aAn show?
initiations/second.
The socket is non-blocking. It does standard job of creating the socket,
setting up the relevant fields, setting SO_REUSEADDR and SO_KEEPALIVE,
setting O_NONBLOCK on the descriptor. No bind(2) is performed. The
connection is initiated from inside a jail (not sure if that implies a
internal bind(2) to the jail's address). There are no connections from
the other host to the first one.
I've tried tuning the net.inet.ip.portrange variables: I've increased
the available portrange to over 45000 ports (quite a lot, should be more
than enough for just anything) and I've toggled
net.inet.ip.portrange.randomized off, but that didn't change anything.
The workaround on the application side - retrying on EADDRINUSE - works
pretty well, but hey, from what I know from the Stevens book, that
shouldn't be happening, though Google said all BSD had a bad habit of
throwing out EADDRINUSE from time to time.
This all happens on a 6.2-RELEASE system. The symptoms are easily
reproducable in my environment.
Is there any known fix for that? If there ain't, can it be fixed? :)
_______________________________________________
freebsd-net@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: connect() returns EADDRINUSE during massive host->host conn rate
- From: Jan Srzednicki
- Re: connect() returns EADDRINUSE during massive host->host conn rate
- References:
- connect() returns EADDRINUSE during massive host->host conn rate
- From: Jan Srzednicki
- connect() returns EADDRINUSE during massive host->host conn rate
- Prev by Date: Re: connect() returns EADDRINUSE during massive host->host conn rate
- Next by Date: Re: connect() returns EADDRINUSE during massive host->host conn rate
- Previous by thread: Re: connect() returns EADDRINUSE during massive host->host conn rate
- Next by thread: Re: connect() returns EADDRINUSE during massive host->host conn rate
- Index(es):
Relevant Pages
|
|