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>