Apache is a general Web server software package that is designed to be correct first and fast second. Even so, its performance is quite satisfactory.
Most sites have less than 10 Mb of outgoing bandwidth, which Apache can fill using only a low-end Pentium-based Web server. In practice, sites with more bandwidth require more than one machine to fill the bandwidth due to other constraints (such as CGI or database-transaction overhead). For these reasons, Apache's development focus has been mostly on correctness and configurability.
Unfortunately, many folks overlook the facts and cite raw performance numbers as if they were some indication of the quality of a Web server product. There is a bare performance minimum that is acceptable, but beyond that, extra speed only caters to a small segment of the market. To avoid having speed become a hurdle for Apache's acceptance in some markets, an effort was made in Apache 1.3 to raise performance so its speed is closer to that of other high-end Web servers.
Finally there are the folks who just plain want to see how fast something can go. The author falls into this category. The rest of this document is dedicated to these folks, who want to squeeze every last bit of performance out of Apache's current model and who want to understand why it does some things that slow it down.
Note that this article is tailored for Apache 1.3 on Unix. Some of it applies to Apache on NT (which has not been tuned for performance yet and, in fact, probably performs very poorly, since NT performance requires a different programming model).