`

浏览器并发连接数测试(IE、Firefox)

阅读更多

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息

一、测试思路

制作网页若干,在一个域名(tt1.howmax.com)下放置20个不同文件名的图片(URI不同)为一组,先用一组测出浏览器的per host max数,再逐步增加组,测试浏览器process(thread) max数,最终网页中图片的总个数为20×n组,请求期间在服务器端用netstat查看TCP连接情况,在客户端用MS NetworkMonitor 3.3抓包分析,两边数据对照结合以确定TCP连接总数,以下是包含一组图片的测试网页截图

二、测试详细设定

服务器端
1、http服务器为apache,在main server的document root下放测试用的网页,避免为不同域名配置vhost
2、增加一个图片别名:AliasMatch ^/test/big.* /data1/apache2/htdocs/test/big1.jpg 避免图片物理拷贝
3、确保KeepAlive打开,KeepAliveTimeout为5秒,如果KeepAlive为关闭,服务器完成一次响应后会主动关闭TCP连接

4、在请求期间用以下命令统计netstat,输出的数字减1后为当前与浏览器请求图片而建立的TCP连接数,减1是因为要html网页请求建立的TCP连接,具体见下方截图

netstat -a -t|grep http|tee rst.txt|wc -l

客户端

1、配置host
192.168.1.101    tt1.howmax.com tt2.howmax.com .... tt10.howmax.com
2、MS NetworkMonitor中设置以下Capture Filter
(tcp.DstPort == 80 and ipv4.DestinationAddress == 192.168.1.101)
or
(tcp.SrcPort == 80 and ipv4.SourceAddress == 192.168.1.101)
在Display Filter中设置
contains(http.Request.HeaderFields.Host, "howmax")
3、其它:
a、per host定义:按域名而不是按IP作唯一host判定
b、process(thread):浏览器进程(线程),IE下一个window或者一个tab页都表现为一个process,而FF的内部处理机制与IE不同,FF的一个window为一个process,tab不占用process

以下是在W7中用IE8请求包含一组图片的网页(上方截图的网页)的netstat和MS Network Monitor抓包的截图,在请求多组图片时结果与一组类似,只是数量增加,这里不再列举



三、测试结果

1、IE7未做测试是因为找不到合适的机器,有一个笔记本有IE7,但因为机主工作需要做兼容性测试,安装了Internet collection后怀疑被污染导致最后放弃了IE7的测试
   2、关于IE6、8的per host max,XP注册表中的值与IE6实测结果一致,为2个,但IE8在W7注册表中写着是6个,实际却是16个

3、关于IE的process max,IE6最多在16个域名的情况下达到32(2×16)个连接,IE8在5个域名的情况下达到80(16×5)个连接,此后便没有尝试增加更多的 host测试,是否受系统的TCP最大连接数影响也没有进一步验证,考虑这年头的迅雷、驴子等下载软件都会主动帮用户修改这个值,上限应该不是问题

4、IE的测试结果在不同的Windows发行版中可能不一致,例如在LCH的W7上测试时IE8就是10个MAX,但也不是传说中的6个,FF则在XP, W7上都保持了一致,有兴趣的同学可以自己测试一下

在测试的过程中顺带有以下发现

1、Windows7的host配置一行最多10个域名,第11个开始无效,需要另起一行再写
2、关于网页刷新,这个曾经网上看到有人说过,这里可以再确认和补充一下
a、点击“转到”,在IE下不会发起任何请求,仅仅是重新渲染而已,但FF(3.5)有些不同,如果超过一定时间,会就地址栏中的URL发起一次请求,但不会对页面元素发起任何请求,如果不是304,则请求新增加的元素(仅仅请求新增加的元素),这里的一定时间确切是多长也未知,感觉是1分钟
b、按F5或者点击“刷新”按钮,会将现有所有内容与服务器确认,也就是发起的HTTP请求头中包含If-Modified-Since和If-None-Match这两个字段,服务器依据这两个字段进行对比,浏览器收到304响应则不再重新获取
c、Ctrl + F5则是所有内容都重新加载,服务器不会有304响应,因为这时发起的HTTP请求头中没有If-Modified-Since和If-None-Match这两个字段
d、在地址栏输入相同地址(或者选中、回车),等同于与“转到”
测试一段时间后发现,对于“并发连接”这个概念,从浏览器的角度来说可能有不同的理解,这篇文章说的并发连接主要是网络层面的TCP连接,在用了dynaTrace 后发现也可以理解为浏览器内部的渲染线程,但无论怎么理解,根据以上的测试结果来看,以后估算服务器的hits量时是需要更新估值了
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics