httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul A Houle <>
Subject Re: [Fwd: [users@httpd] [announce] Apache HTTP Server 2.2.0 Released]
Date Fri, 02 Dec 2005 13:49:52 GMT
William A. Rowe, Jr. wrote:
> If the user must rewrite their content handlers to pay attention to 
> thread
> jumps, and must use some sort of yeild beyond 
> apr_socket_poll/select(), then
> I'd agree it becomes 3.0.
> I wouldn't worry about protocol/mpm authors, who are a breed to ourselves
> and should be able to handle any bump.  It's the joe who put together 
> a nifty
> auth or content module who has to jump through hoops to learn the new 
> API who
> will suffer if we don't yell out **3.0**!!!
    Well,  I get back to thinking about the cultural difference between 
open source and commercial software here.  That is,  the difference 
between a conceptually simple system (Unix) and a system with 
optimization for every special case,  codesign,  et. al (OS/360)

    When Microsoft decided that threading would be ~the way~ in 
Windows,  they put a lot of effort into letting people run old 
components by tagging old components as threadsafe or not,  and 
automatically serializing components that aren't threadsafe.

    The prefork model has contributed to the reality and perception of 
Apache as a reliable product.  Threading is great for a system that's 
built like a swiss watch,  but a disaster for the tangle of scripts (or 
tangle of objects) that most web sites run.

    In the days of MS-DOS,  I did a lot of downloading over a 2400 baud 
modem,  so I wrote an xmodem/ymodem client that ran in the background as 
you did other things -- this was your classic interrupt-driven state 
machine.  I never got it to work 100% right.  It's not easy to do this 
kind of programming AND when you push the hardware and OS in this 
direction you find out things you wish you hadn't.

    I've had the same experience with single-threaded web servers such 
as thttpd and boa.  I'd do a quick evaluation and I'd be like "damn 
that's fast" and then I'd put it into production and find that they 
didn't work 100% right.  I'd go back to Apache because,  even if ate 
more RAM than I liked,  Apache worked correctly.

    As Apache has been moving in the direction of more efficient 
concurrency models,  IIS has been moving in the direction of more 
isolation.  I'd love more efficiency,  but I don't want to give up 
reliability -- if the world's web apps are going to need to be designed 
like swiss watches in the future,  the world is going to pass Apache 3 by.


View raw message