On Fri, Sep 28, 2012 at 3:04 AM, val john <[email protected]> wrote:
> Hi.. guys
>
> My apache config as follows ,
>
> #
> Timeout 1000
> KeepAlive Off
> MaxKeepAliveRequests 500
> KeepAliveTimeout 15
>
> <IfModule mpm_prefork_module>
> StartServers 5
> MinSpareServers 5
> MaxSpareServers 10
> MaxClients 150
> MaxRequestsPerChild 500
> </IfModule>
>
> my apache getting stuck once hour due following error in the log [1], im
> using Debian 5 and have 4G memory... , what can i do for fix this
> issue..? .
>
> my memory is also fully utilized ,
>
> total used free shared buffers cached
> Mem: 3962 3934 27 0 231 3167
> -/+ buffers/cache: 534 3427
> Swap: 8192 0 8192
>
>
>
>
> [1] Error
> ======
> Thu Sep 27 18:25:42 2012] [error] server reached MaxClients setting,
> consider raising the MaxClients setting
> [Thu Sep 27 18:29:08 2012] [error] [client 203.143.18.194] File does not
> exist: /htdocs
> [Thu Sep 27 18:35:26 2012] [error] [client 203.143.18.194] File does not
> exist: /htdocs
>
>
> Thank You
> john
What are you running on the server? Prefork is not a particularly
efficient way of servicing a large number of clients, since each
connected client - including keep alive connections - consumes an
entire apache process.
On our high traffic servers, we use the event MPM, which handles keep
alive connections in a much more efficient manner, whilst not
requiring so much memory to support each connected client.
The downside is that things like mod_php do not work well in threaded
environments (some might say this is an upside); instead you can use
php-fcgi to connect web apps into httpd. This actually gives you more
control over the PHP processes, controlling how much memory and CPU
each app can use.
For instance, our event configuration looks like this:
<IfModule mpm_event_module>
StartServers 8
MaxClients 1024
MinSpareThreads 128
MaxSpareThreads 768
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
We start 8 processes, each with 64 threads, so we can handle initially
512 concurrent requests. If we ever have less than 128 spare
threads/slots, then it will start more process until we do - each
process adding 64 threads/slots, up to a maximum of 1024 concurrent
requests. This uses less than 1GB of RAM in total, but bear in mind
that in our case, this server only serves static files and reverse
proxying to application servers.
If you can't move off prefork, and your server is out of memory, then
whatever you do, do not increase MaxClients! You do not want to start
swapping processes to disk, as this will make each request take longer
to process, which will make the server become even more overloaded.
Cheers
Tom
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]