Apache(KeepAlive)的设置

2010-08-09

HTTP 默认行为是在新的连接上请求文件,这会花费许多时间启动与关闭连接。

使用KeepAlive可以单一连接时进行多个请求,因此可以减少建立socket连接所需要的时间,而又会加快客户端在请求网页内容的加载速度。

KeepAlive设定:

KeepAlive On //启用KeepAlive 设定

MaxKeepAliveRequests 100 //指定单一连续时间可以允许多少个保持连接的请求

KeepAliveTimeout 15

KeepAliveTimeout 如何设定最佳值:

在没有接受其他请求时,KeepAliveTimeout 指定会持续开启特定连接的时间。

此指令的最佳设定完全视网站的特性而定。

分析:

KeepAliveTimeout 过期前,用户已点击下一网页内容的链接而进入下一网页,他们会在同一连接获得该文件。

不过,如果该时间过期,他们就需要建立对该下一网页的服务器的新连接。

同时,如果用户从网站下载资源然后离开,Apache 仍然会持续开启连接KeepAliveTimeout 秒,而在这段时间该子进程无法服务任何其他请求。

因此,KeepAliveTimeout设得太大与太小都不适合。

如果将KeepAliveTimeout设的太大,在server-status里会看到许多进程保持连接状态却是空闲的。

如果将KeepAliveTimeout设的太小,则当单一客户端在短暂的访问期间请求许多连接时,会产生类似于完全停用 KeepAlive的情况。

因此,在一般情况下,将KeepAliveTimeout 设得太大引起的问题会比设得过小引起的问题小些。

参考文档:

http://httpd.apache.org/docs/2.2/mod/core.html#keepalive

http://httpd.apache.org/docs/2.2/mod/core.html#keepaliverequests

http://httpd.apache.org/docs/2.2/mod/core.html#keepalivetimeout