日期:2014-05-17  浏览次数:20867 次

浏览器、apache的连接超时详解

前言

要理解浏览器和apache之间的连接超时问题,需要先明白http的keep-alive属性。先简单介绍keep-alive,您可以从网上查找更加详细的介绍。

浏览器和apache都是基于http协议的。而http协议中的keep-alive属性通俗的解释就是浏览器和apache第一次建立TCP连接,传输完数据不会立刻断开这个TCP连接,而是继续等待下一个请求。保持一段时间(keep-alive-time)后才会断开连接。

下面做个测试,查看apache在打开keep-alive支持和关闭keep-alive支持时候的TCP连接状态。

?

?

服务端 虚拟机上的Centos
客户端 本机上IE6浏览器
服务端地址 192.168.212.128
客户端地址 192.168.212.1
访问的文件test.html
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
<link rel="stylesheet" type="text/css" href="./main.css" />  
<script type="text/javascript" src="./main.js"></script>  
</head>  
<body>  
您知道吗?A处和B处的色值是一样的。<br/>  
<img src="./main.jpg">  
</body>  
</html>  

首先关闭apache的keep-alive参数,打开httpd.conf。

打开浏览器访问apache。使用netstat命令查看连接状态。

#netstat –nt|grep –i ’80′

可以看到四个连接,因为本地访问速度很快,只能抓取到TIME_WAIT得状态。那一个test.html网页为什么会有四个连接呢?

看test.html的内容可以知道有:

1,main.css 文件

2,mian.js?? 文件

3,main.jpg 图片

4,本身的test.html文件

所以有四个连接。

再看看关闭apache的keep-alive支持后的连接状态。

重启服务器,浏览器访问test.html,在查看连接。

#service httpd restart

#netstat –nt|grep –i ’80′

可以看到只有一个连接。而且这个连接状态是ESTABLISHED。我们在httpd.conf中设置了keepAlliveTimeout=15,所以连接建立后15秒后才关闭连接。

测试得到的结论

如果关闭apache的keep-alive属性,访问的页面中的(上例中