Apache优化之KeepAlive

| No Comments | No TrackBacks

KeepAlive功能是在HTTP/1.1协议中要求实现的,用来保持客户机和服务器的长连接,执子之手与子偕老。通过减少建立TCP Session的次数来提高性能。常用的配置参数有{KeepAlive, KeepAliveTimeout, MaxKeepAliveRequests}。逐个说来:KeepAlive决定是否开启KeepAlive支持(On/Off);KeepAliveTimeout决定一个KeepAlive的连接的无请求状态最长保持的时间(以秒为单位), 时间一到就shutdown连接,若之后又有数据传输则必须再建立新的连接了;MaxKeepAliveRequests于 KeepAliveTimeout相似,意思是服务多少个请求就shutdown连接。看个例子:

KeepAlive On
KeepAliveTimeout 5

意思是说,打开KeepAlive,每个连接只保持5秒就中断。

对于KeepAlive的配置需要慎重,错误的参数可能导致严重的性能问题。一个高负载的Server,如果建立很多长连接将无法继续服务新的连接。因此需要根据server的性质调整KeepAliveTimeout或是MaxKeepAliveRequests的值。

例如:你的网页上有三幅图画2个外部javascript,他们都存放在你自己的server上。因此将MaxKeepAliveRequests设置为7比较合适。3幅图 2个js各一个link,网页本身一个link,还有firefox传说中的favicon.ico。当然还是要有KeepAliveTimeout的。如果客户机用了该死的IE并且设置了某个该死的选项,IE是不会向服务器发送HEAD请求查看图片(或是其他资源)是否过期的,而是直接使用本地图片。这个时候服务器是不会计算Request的(因为压根就没有Request嘛)。再如果只有MaxKeepAliveRequests参数,服务器会默认等待5秒才结束KeepAlive连接。通常这5秒可能玩死一个高负载的服务器。因此打开Firefox,启动Firebug,看看你的站究竟需要多少次请求,再决定KeepAlive吧。

No TrackBacks

TrackBack URL: http://mtblog.jianingy.com/mt-tb.cgi/209

Leave a comment

October 2008

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Friends' Links

Archives

Powered by Movable Type 4.21-en