Apache不处理新的请求,但没有达到max_client值。许多空闲的孩子

我们正面临一个问题,即使apache尚未达到max_client设置,也不处理新的请求。

Max_client被设置为800
max_spare服务器是36
min_spare服务器是35
超时300
保持活跃
保持活动超时10

Max_keep_alive_requests 100

为什么Apache不处理新的请求,并发送超时,即使它没有达到其max_client值。

一个strace透露约有80多个apache儿童处于空闲状态,即输出为0.0000秒。

为什么这么多孩子都处于闲置状态,还在生孩子,还没有处理请求和发送超时。

我们使用Php5,Apache 2和mpm-prefork,Mysql 5,在Ubuntu 11.04上运行CSF防火墙。

所有的请求都是从单一的IP(我们的IP地址)。

单个IP的太多请求会导致任何TCP / IP或Apache限制连接,导致拒绝新的请求?

为什么这么多孩子都处于闲置状态,还在生孩子,还没有处理请求和发送超时。

“没人知道”

首先,您需要了解在prefork中产生新的进程是非常昂贵的。

为了尽可能避免这样做,请为您的服务器负载和期望的stream量峰值configuration正确的参数。

为了find这个问题,你去看看服务器状态,并检查实际上是什么样的负载 – 它是连接数,keepalive,每IP并发性,带宽,后端代理延迟瓶颈,自由进程太less – 是什么?

如果启用了服务器状态(和ExtendedStatus!)并了解输出的含义,请返回给我们。

可能是您正在通过您的testing平台的同一连接发送多个请求。

基本上你设定:

keepalive on maxkeepaliverequests 100 

所以在这种情况下,如果您通过同一连接生成多个请求,则会在100个请求中触发粉丝。

尝试与:

 keepalive off 

要么

 maxkeepaliverequests 0 

注意:你的ServerLimit设置也应该至less匹配MaxClients