httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dean Gaudet <dgau...@arctic.org>
Subject Re: PCWeek article...
Date Wed, 11 Jun 1997 18:14:33 GMT
On Wed, 11 Jun 1997, Jim Jagielski wrote:
> The graph shows Apache 1.1.1, 1.2b and IIS (I believe) with 1.2 lagging
> behind 1.1.1 a bit and both behind IIS quite a lot. They mention that
> they used the same "configuration" files for both versions of
> Apache to keep it fair, whatever that means.

It means they hammered it with hundreds of hits per second, and
experienced Apache's "slow growth" problems because they didn't tweak
StartServers or MaxSpareServers.  1.1 would grow as fast as possible.
1.2 grows one child per second.  I've never verified this myself, this
is based entirely on thought experiments.

An interim solution to these boneheaded benchmarking folks is to put an
httpd.conf-high_performance-dist into the config directory which tweaks
the settings in such a manner as to be able to serve 200 requests per
second (i.e. StartServers 80, MaxSpareServers 100, MinSpareServers 50
or some crap like that).  The truth is, they probably never look at the
memory requirements of the app and so won't notice the "bloat".

A longer term solution is one that Cliff Skolnick mentioned a long time
ago.  I'll try rolling this into my recent patch that improves behaviour
for large servers.  The goal is to spawn servers at an exponential rate
-- spawn 1 server if there are enough idle, then a second later if there
still aren't enough idle then spawn 2 servers, then 4 servers, and so on.
Servers are killed at a rate of one per-second if there are too many
(my patch already achieves this).

This exponential spawning means that even if minspare is set too low
it'll be able to keep up with extended bursts of traffic.

I will also work diagnostics into it so that the server can say "uh,
bonehead, I just had to spawn 32 servers in one second, maybe you want
to read the StartServer documentation".  It already diagnoses a possibly
low MaxClients setting.

Anyone have an alternative spawning plan?

Oh yeah I'm also tempted to change the sleep(1) into a select() timeout so
that we can have it perform child maintenance more than once per second.

Dean


Mime
View raw message