httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tom Evans <tevans...@googlemail.com>
Subject Re: [users@httpd] apache seems to be busy
Date Tue, 18 Oct 2011 11:59:20 GMT
On Tue, Oct 18, 2011 at 12:11 PM, Petr Hracek <phracek2@gmail.com> wrote:
> Dear users,
>
> There are run most AJAX requests. After increasing the values
> StartServers 15
> MinSpareServers 10
> MaxSpareServers 30
>
> ==> error_log <==
> [Tue Oct 18 11:25:59 2011] [info] server seems busy, (you may need to
> increase StartServers, or Min/MaxSpareServers), spawning 8 children,
> there are 0 idle, and 23 total children
> [Tue Oct 18 11:26:00 2011] [info] server seems busy, (you may need to
> increase StartServers, or Min/MaxSpareServers), spawning 16 children,
> there are 7 idle, and 31 total children
>
> Can there be a problem that AJAX objects did not close the connections properly?
>
> Thank you in advance
>

Anything is possible, but no, that is unlikely.

Do you have more of these messages in the log? It looks like you don't
start enough children to serve your peak load. These two log entries
show that your server started with 15, and within a few seconds
started an additional 16 children, indicating that you need to
increase your StartServers.

Forking isn't free, so you will want to start as many child processes
as you will probably need, and allow them to stay alive rather than
killing them off when you get quiet, just to respawn them again when
you are busy. The trade-off from doing this is that each child
consumes memory.

Therefore:

Set StartServers and MaxSpareServers to the same value, and increase
both until you don't get these messages - we increase MaxSpareServers
so that it doesn't just kill them all off in quiet periods.

Once you have found how many server children you need, set
StartServers to that value, MaxSpareServers to maybe 80% of that
value, and MinSpareServers to about 10% of that value.

The next step is working out how many server children is too many. To
do this, you need to stress test your application, trying to get it
super busy - basically, in fact, until Apache croaks that you need to
increase MaxClients.

Stop the test, increase MaxClients (if you increase it above 256, you
also need to increase ServerLimit), repeat test. Do this until your
server runs out of memory/CPU/disk - that is your absolute limit to
number of server children. I'd normally step back a bit from that, to
allow some overhead.

As an example, one of our busy apache servers has StartServers 200,
MinSpareServer 20, MaxSpareServers 160, MaxClients 512, ServerLimit
512. When we approach MaxClients, the box is approaching running out
of memory.

Hope that helps

Cheers

Tom

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message