Since Apache 2.0, we've had the MPM architecture, which means you can
plug in your choice of processing model.  That's also how Apache 2
works cross-platform, rather than being (like Apache 1) a Unix server
ported with lots of compromises in performance/etc to other platforms.


i was surprised that event based MPM did not catch too much attention
of Apache developers? maybe i am wrong? :)
Howard,
Well, your both right and wrong :-) The event driven network i/o model is really powerful and as you say, it can be much more robust as compared to a threaded process model, and it's also very scalable (think large number of concurrent clients). Here are what I see as the two basic problems:

1. Apache httpd runs everywhere or nearly so. Most platforms have their own event driven network i/o APIs (epoll, KQueue, aio, and so forth). Some platforms (notably Windows) have async network i/o APIs which means you also have to allocate and manage i/o buffers across your network i/o calls. We've never quite settled on the right abstraction layer that is both portable, performs well and accommodates platforms that have more traditional network i/o models.

2. The core Apache httpd architecture is not really suited for use with an event driven/async network i/o API. Yes we made the event MPM work , but it feels kinda hackish to me (and I helped do the work so I gotta right to criticize :-). Someone recently suggested making the core httpd engine a state server; i really like that idea and maybe it will be a feature of 'amsterdam'. We'll see.

Bill


Reply via email to