**
KeepAliveTimeout
**
在APACHE的httpd.conf中,KeepAlive指的是保持连接活跃,类似于Mysql的永久连接。换一句话说,如果将KeepAlive设置为On,那么来自同一客户端的请求就不需要再一次连接,避免每次请求都要新建一个连接而加重服务器的负担。 KeepAlive 配置指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接,如果 KeepAlive 设置为On,那么用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这一次 TCP 连接中完成,而不用重复建立新的 TCP 连接和关闭TCP 连接,可以提高用户访问速度。
KeepAlive的连接活跃时间当然是受KeepAliveTimeOut限制的。如果第二次请求和第一次请求之间超过KeepAliveTimeOut的时间的话,第一次连接就会中断,再新建第二个连接。 所以,一般情况下,图片较多的网站应该把KeepAlive设为On。
如果KeepAliveTimeOut设置的时间过短,例如设置为1秒,那么APACHE就会频繁的建立新连接,当然会耗费不少的资源;反过来,如果KeepAliveTimeOut设置的时间过长,例如设置为300秒,那么APACHE中肯定有很多无用的连接会占用服务器的资源,也不是一件好事。
其实,这和MySql的机制有点相似,KeepAlive相当于mysql_connect或mysql_pconnect,KeepAliveTimeOut相当
wait_timeout。
**
timeout
**
查看官方文档对timeout的解释大概意思是:
- 接收GET请求的所花费的时间总和
- POST或者PUT请求时发送TCP包给服务器的间隔(不是间隔时间之和)
- 发送响应时发送TCP包的间隔(不是间隔之和)
这里我们更关心第3点.
也就是说, 就算timeout设置了1s, 服务器处理请求的时间完全可以超过1s, 只要服务器每隔不超过1s的时间就发送一点数据到客户端即可.
现在想想也是,服务器跟客户端的交互并不是一气呵成的,需要连接通信–间隔若干时间–继续通信–间隔若干时间… 这样反反复复。所以咱们timeout参数限制的是这个间隔时间,而不是整个通信的时间总和,故而,即使有的请求超过了TimeOut的值,也依旧没有断开连接。
**
MaxClients
**
Maxclients指令设置了允许同时伺服的最大接入请求数量。任何超过Maxclients 限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。系统管理员可以根据硬件配置和负载情况来动态调整这个值,虽然理论上这个值越大,可以处理的请求就越多,但Apache默认的限制是不能大于256。