httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Folini <>
Subject Re: [users@httpd] Testing Apache Parameters
Date Tue, 16 Oct 2007 14:40:45 GMT
Hey James,

All your config proposals are DoS/DDoS relevant.  Timeouts mean,
that a client can block a process or a thread (depening on your MPM)
for a given time.  A high timeout means, it will be blocked longer.
A blocked process can not serve other clients.

If you were a bank and you would allow a customer to stand in front of
one of your clerks without saying a word for 7200 seconds, then this
would be an invitation to block all your clerks with only 10 people or
so. Unless you are a really big bank and it takes 25 or 50.

A connection to your server means ram (and a few cpu cycles). 2000
maxclients means up to 2000 times the amount of ram. A typical apache
process (in prefork mode) takes a couple of MBs. 2000 apache processes
are a fairly big amount of ram.

On Tue, Oct 16, 2007 at 08:33:28AM -0500, James Wuerflein wrote:
> #Timeout 300 - Default
> Timeout 7200

This means that a client can keep a request open
for 7200 seconds. Unless you absolutely have to configure
it that way, do not do that. Keep the default
or lower it to reasonable values.

Timeout 30 sounds sane to me.

> KeepAlive On
> MaxKeepAliveRequests 100
> ### * MaxKeepAliveRequests 0   *- thinking I should change this to 0 ?

No. Stick with the default. It means that a client can not
block a process/thread until all eternity, but will 
have to reconnect from time to time.
> #KeepAliveTimeout 15 - Default
> KeepAliveTimeout 7200

Stick with the default or lower it to something around 5.
5 means means the client gets a html page and can fetch all
gifs/pngs belonging to the page via the same tcp connection.
But for the next click (after more than 5 seconds, that is)
he will have to open a new connection. 7200 seconds means,
that he browses your page, goes away to read slashdot, but
your webserver waits for 7200s to see if he can serve him
again. Usually not a good idea.

> MinSpareServers 5
> MaxSpareServers 20

This is totally dependent from your traffic. If you work
with apache2, leave it alone and stick with the default
unless you know what you are doing and you need to
reconfigure it.

> MaxClients 2000

Do you have a maximum of 2000 apache processes / threads 
available on this server? If not, then set it to the
number of clients you are willing to serve at the same
time. Note, that this is actually not the number of
individual clients, but the number of connections.
Your typical browser opens up to four connections in

If we return to the bank: This is the number of clerks
you want to have to take care of your customers.
Ideally this is a number higher than your maximum load
and very close to the value where the server crashes.
Proper performance testing should reveal the good value.
(For completeness: Imagine your bank customers having
four heads to keep four clerks busy)

> MaxRequestsPerChild 0

Leave it at the default value. If you have a broken module
or some other nasty thing, it might eat all your ram.
By telling a child to die after n requests, this memory
leak is covered and the memory is freed.

Under the line:
Unless you know what you are doing: Stick with the
default timeout values, do rather not mess with Min/MaxSpareServers
(apache2 knows quite well what is best for him) and
if you absolutely have to tune things, then lower the
default timeout.

just my 2 cents.

Christian Folini

The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:> for more info.
To unsubscribe, e-mail:
   "   from the digest:
For additional commands, e-mail:

View raw message