[zeromq-dev] Even more fun with accept
sophacles at gmail.com
Thu Apr 30 17:35:50 CEST 2009
On Thu, Apr 30, 2009 at 3:58 AM, Pieter Hintjens <ph at imatix.com> wrote:
> Second, Unix has an interesting strategy for dealing with closed
> sockets, namely to keep them around for a minute or so. This means
> that you will often hit this ceiling when in fact there should be
> sockets available but they are not yet purged. Thus a sensible
> strategy for recovering is to wait for a while (60 seconds) before
> accepting new sockets.
This isn't a Unix/posix specific thing. Its part of the TCP standard and is
called TIME_WAIT. The problem is because TIME_WAIT exists to deal with
"just in case" data arrival, it ties up a descriptor on Unix because of the
semantics of both. (Also because socket semantics on unix were pretty well
established before people really realized that TIME_WAIT sockets tying up
descriptors is useless in a large proportion of the cases, hence newer OSes
allowing you to tweak the time_wait timeout independently and out of spec).
A good reference on this is:
This reference does assume some familiarity with the TCP state machine.
> Knowing in advance your system's limits will let you avoid getting the
> error but it won't change the outcome - you still need to warn the
> user loudly, and you still need to wait before doing further accepts.
I very much agree with this suggestion.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the zeromq-dev