我们正面临一个问题,即使apache尚未达到max_client设置,也不处理新的请求。
Max_client被设置为800
max_spare服务器是36
min_spare服务器是35
超时300
保持活跃
保持活动超时10Max_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