Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Feb 2002 00:43:41 +0000
From:      Tony Finch <dot@dotat.at>
To:        Dominic Marks <dominic_marks@btinternet.com>
Cc:        Peter Wemm <peter@wemm.org>, Mike Silbersack <silby@silby.com>, Hiten Pandya <hiten@uk.FreeBSD.org>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: In-Kernel HTTP Server (name preference)
Message-ID:  <20020220004341.A17928@chiark.greenend.org.uk>
In-Reply-To: <20020219092058.A78717@host213-123-131-110.in-addr.bto>

next in thread | previous in thread | raw e-mail | index | archive | help
Dominic Marks <dominic_marks@btinternet.com>
>
> http://www.acme.com/software/thttpd/notes.html on the section
> regarding non-blocking I/O:
>
> "The fourth generation. One process only. No non-portable threads/LWPs.
> Sends multiple files concurrently using non-blocking I/O, calling
> select()/poll()/kqueue() to tell which ones are ready for more data.
> Speed is excellent. Memory use is excellent. Portability is excellent.
> Examples of this generation: Spinner, Open Market, and thttpd. Perhaps
> Apache will switch to this method at some point. I really can't
> understand why they went with that complicated pre-forking stuff.
> Using non-blockijng I/O is just not that hard."

Apache-2.0 will use a combination of in-process threading and pre-forking
by default, but the IO architecture has some scope for adding non-blocking
IO in the future.

The reasons for preforking are that it makes programming server extensions
much easier, especially when you consider things like database libraries
that don't provide a non-blocking API, etc. (Other bits of Apache are
designed to be simple, like the memory management.) Another thing in
preforking's favour is that it makes the server as a whole MUCH more
robust -- a child process can blow up without taking down the server --
and again this has advantages with unreliable server extensions.

Tony.

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




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