This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Idle timeout and maximum # of sockets for athttpd
- From: "Øyvind Harboe" <oyvind dot harboe at zylin dot com>
- To: ecos-discuss at ecos dot sourceware dot org
- Cc: "Anthony Tonizzo" <atonizzo at gmail dot com>
- Date: Thu, 13 Dec 2007 10:53:07 +0100
- Subject: [ECOS] Idle timeout and maximum # of sockets for athttpd
> > I don't quite understand CYG_HTTPD_SOCKET_IDLE_TIMEOUT
> > in detail, but it is hardwired to 300 seconds which appears to be
> > rather long for the default maxim # sockets (16).
>
> The time of 5 minutes before an inactive socket is closed was
> chosen without much concern to the maximum number of
> sockets. Its intentions were mainly to close sockets that have
> been inactive for more than 5 minutes, regardless of the reason:
> In other words I felt that with persistent connections (and very
> few sockets available to begin with) it is important to reclaim
> any and all resource you might think are not actively used.
>
> The sockets might be dead, or the user of the client might just be
> enjoying a sandwich before she comes back surfing: Either way
> if the socket is idle for 5 minutes I want to be able to reclaim it for
> connections that actually carry some traffic.
>
> We can make a case for making this a CDL option..
I hate options :-) I guess if it was to be an option I would like to
have a minimize # of
sockets option.
> > Could CYG_HTTPD_SOCKET_IDLE_TIMEOUT be set to 0?
> > What would happen?
>
> I can interpret this question two ways:
>
> 1) CYG_HTTPD_SOCKET_IDLE_TIMEOUT equal 0 means that
> there is no timeout (i.e. remove the call to
> cyg_httpd_close_unused_sockets(). In this case the sockets will
> be opened forever. You are now at the mercy of the stack to
> determine that a socket is dead. Might work, but I have not
> experimented with it. Now, your delay is even more hardcoded
> (this time inside the stack itself.)
> 2) CYG_HTTPD_SOCKET_IDLE_TIMEOUT is active and equal 0
> in which case, with the current code you would effectively resort
> to closing each connection after the request was served. In other
> words, you void the advantages of persistent connections by
> reverting to HTTP 1.0. If you think 16 sockets are not enough
> with persistent connections you will hate the alternative, where a
> single web page with a lot of pictures can exhaust the number of
> sockets.
Is there a reason I would not want to minimize the # of sockets used?
I guess athttpd would
typically be used for some sort of logging/configuration server.
Performance is not so
much an issue at that point.
The minimum # of sockets would then presumably be with
CYG_HTTPD_SOCKET_IDLE_TIMEOUT being somewhat near the length
of processing a request. 5 seconds seems like a reasonable default at
that point...
--
Øyvind Harboe
http://www.zylin.com - eCos ARM & FPGA developer kit
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss