Linux – Apache not processing new requests without reaching max_client value.With many idle children

apache-2.2linuxtcpUbuntu

we are facing a problem,that new requests are not processed even if apache hasn't reached its max_client setting.

Max_client is set to 800
max_spare server is 36
min_spare
server is 35
Timeout 300
keepalive on
keepalive timeout 10

Max_keep_alive_requests 100

Why is apache not processing new requests and sending timeouts evenif it hasnt reached its max_client value.

An strace revealed that around 80+ apache children is in idle state that is 0.0000 seconds in strace ouput.

Why this many children is in idle state and still generating new children,but stillnot processing request and sending timeout.

we are using Php5,Apache 2 with mpm-prefork,Mysql 5,Running on Ubuntu 11.04 with CSF firewall.

All the requests are made from single ip(our ip address).

Will too many request from a single ip result in any TCP/IP or Apache Restrictions to connect,result in denying new requests?

Best Answer

Why this many children is in idle state and still generating new children,but stillnot processing request and sending timeout.

"Nobody knows"

First of all, you need to understand that spawning new processes is VERY expensive in prefork.

To avoid doing that whenever possible, you configure the right parameters for your server load and expected traffic peaks.

To find out THAT, you go look at server-status and check what kind of load this actually is - is it bottlenecking on number of connections, keepalive, per-IP concurrency, bandwidth, backend proxy latencies, too few free processes - what ?

Get back to us if you have enabled server-status (and ExtendedStatus!) and understand what the output means.