Process Creation
Prior to Apache 1.3 the
MinSpareServers
,
MaxSpareServers
, and Start- Servers
settings all had drastic effects on
benchmark results. In particular, Apache required a
“ramp-up” period in order to reach a number of children
sufficient to serve the load being applied. After the initial
spawning of StartServers
children, only 1 child
per second would be created to satisfy the
MinSpareServers
setting. So a server being
accessed by 100 simultaneous clients, using the default
StartServers
of 5, would take on the order of 95
seconds to spawn enough children to handle the load. This works fine
in practice on real-life servers, because they aren’t restarted
frequently. But it does really poorly on benchmarks that might only
run for ten minutes.
The one-per-second rule was implemented in an effort to avoid
swamping the machine with the startup of new children. If the machine
is busy spawning children, it can’t service requests. But it
has such a drastic effect on the perceived performance of Apache that
it had to be replaced. As of Apache 1.3, the code will relax the
one-per-second rule. It will spawn one, wait a second, then spawn
two, wait a second, then spawn four, and it will continue
exponentially until it is spawning 32 children per second. It will
stop whenever it satisfies the MinSpareServers
setting.
This appears to be responsive enough that it’s almost
unnecessary to twiddle the
MinSpareServers
, MaxSpareServers
,
and StartServers
knobs. When more than 4 children ...
Get Web Performance Tuning now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.