public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] Idle timeout and maximum # of sockets for athttpd
@ 2007-12-13 14:33 Øyvind Harboe
  2007-12-13 15:24 ` [ECOS] " Anthony Tonizzo
  0 siblings, 1 reply; 5+ messages in thread
From: Øyvind Harboe @ 2007-12-13 14:33 UTC (permalink / raw)
  To: ecos-discuss; +Cc: Anthony Tonizzo

> > 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

^ permalink raw reply	[flat|nested] 5+ messages in thread
* [ECOS] Idle timeout and maximum # of sockets for athttpd
@ 2007-12-12 11:07 Øyvind Harboe
  0 siblings, 0 replies; 5+ messages in thread
From: Øyvind Harboe @ 2007-12-12 11:07 UTC (permalink / raw)
  To: eCos Disuss

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).

Issuing 8 or so http requests, e.g. via wget, in rapid succession will
cause the server to
sit there for a while before recovering. No requests appear to be
dropped on the floor,
but if there is no response from a server on the LAN within 30 seconds
it will be very hard to
distinguish that from a crashed server for most users. Servicing an
actual request takes << 1 second
in my tests and by increasing the maxim # of sockets to 64, the
athttpd appeared quite robust. Still
it is possible to overflow it, but the by the time it has overflowed
I'd expect sockets to start getting
freed again...

Any thoughts?

Make CYG_HTTPD_SOCKET_IDLE_TIMEOUT configurable via cdl w/default being some
multiple of maximum # of sockets?

Could CYG_HTTPD_SOCKET_IDLE_TIMEOUT be set to 0? What would happen?

-- 
Ø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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-12-17 11:32 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-13 14:33 [ECOS] Idle timeout and maximum # of sockets for athttpd Øyvind Harboe
2007-12-13 15:24 ` [ECOS] " Anthony Tonizzo
2007-12-13 15:33   ` Øyvind Harboe
2007-12-17 16:03     ` Tom Deconinck
  -- strict thread matches above, loose matches on Subject: below --
2007-12-12 11:07 [ECOS] " Øyvind Harboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).