Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Apr 2002 21:38:05 +0000
From:      Mark Delany <markd@BushWire.Net>
To:        Mike Silbersack <silby@silby.com>
Cc:        Bill Fenner <fenner@research.att.com>, freebsd-net@FreeBSD.ORG
Subject:   Re: What does FreeBSD do when listen queue is full ?
Message-ID:  <20020417213805.A91259@bushwire.net>
In-Reply-To: <20020417211402.O16380-100000@patrocles.silby.com>; from silby@silby.com on Wed, Apr 17, 2002 at 09:32:34PM -0500
References:  <200204171956.MAA02194@windsor.research.att.com> <20020417211402.O16380-100000@patrocles.silby.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Apr 17, 2002 at 09:32:34PM -0500, Mike Silbersack allegedly wrote:
> > This is wrong too; it should silently drop the ACK and leave the
> > connection in the pending queue.

> How do the apps which try to rate-limit connections (OpenSSH, sendmail) do
> it?  Would that behavior be defeated with your proposed changes?

Are we discussing what happens when the number of pending connections
exceeds the backlog? If the suggestion is to leave such connections
pending then the question becomes what's the real purpose of backlog?

If the suggestion is something else, then excuse me for misconstruing
as it makes my following comments irrelevant.

FWIW, I use backlog as a method of indicating how long a client can
expect to wait before getting serviced. This is especially useful with
servers behind load balancers.

For arguments sake, say I have a web server that I know handles 10
requests per second and I want to offer a 2 second response time.  To
do this I set the backlog to 20 on each of the web servers and
configure the load balancer to periodically check each server by
attempting to establish a session.

If the load balancer connection attempt fails then it knows that that
particular server already has 2 seconds worth of work so it should not
consider that server as available at the moment (note that some load
balancer configurations mean that connection counting is not possible
and, oftentimes they don't do so accurately anyway).

By making the backlog effectively infinite, my application cannot give
feedback on anticipated service times and the load balancers will have
to timeout on their periodic checks. Neither sounds very satisfactory
to me.

To be sure there are philosophical arguments about whether the client
or the server should decide on waiting times or indeed whether there
are better load balancer strategies, but I think genuine cases exist
where a server wants to communicate service times back to the client
and backlog strikes me as a reasonable way to do this.


Regards.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020417213805.A91259>