On Wed, Aug 01, 2001 at 10:16:21AM -0400, Charlie ROOT wrote:
> LOL.  Yes, apache is bad. What's your thoughts on select-based
> multiplexing compared to a concurrent process Fork()ing model then?

Multiplexing is fine, the only trouble is many operating systems have
trouble with select() and poll() implementations (slow with too many
file descriptors). Additionaly, if your server is all-in-one process, it
will not scale on SMP machines unless you start as many servers as you
have CPUs.

If we are talking about many I/O strategies, a process-per-connection is
the heaviest for the kernel. There are many other strategies available,
including the traditional poll() or select() with non-blocking I/O.
Signal-driven I/O, and asynchronous I/O (when you tell the kernel to do
it's thing, and get notified when it's done, meanwhile doing other
things instead of wasting cycles). Furthermore, there are alternative
implementation of poll() and select() system calls like /dev/poll for
example. OpenBSD and FreeBSD implement very scalable, but non-portable
mechansim called kqueues. There's more information here:
http://www.kegel.com/c10k.html.

Reply via email to