浏览器并发连接数测试(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量时是需要更新估值了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一步:例如我们要测试内网结点A与B两台计算机之间的传输带宽,那么我们需要复制iperf.exe到这两台计算机硬盘中。   第二步:随意选择结点A作为服务端,而B作为客户端,在A上进入命令提示窗口运行iperf -s命令,这样iperf将以服务端方式启动,并且通过TCP的5001端口监听数据。(如图4)   第三步:接下来我们返回到B结点进入命令提示窗口,然后运行iperf -c 192.168.0.199 -t 60,这个命令是将B结点以客户端的方式运行,并且连接IP地址为192.168.0.199的服务端,监视测量数据时间是60秒。(如图5)   第四步:运行完毕客户端将自动开启1903端口连接服务端的5001端口,通过发送与接收数据包来实现测量带宽的目的。   第五步:与此同时我们在服务端上也可以看到有客户端连接5001端口的提示,这表明两个结点已经建立了相应的连接,数据通讯正常。(如图6)   第六步:由于我们之前是设置了测量时间间隔为60秒,所以在60秒过后客户端结点上就会显示出测量的具体数据,从A到B发送接收数据的速度为177Mbits/sec,由于以太网数据传输是双向双工的,所以百M网线理想状态传输速度应该是200Mbits/sec。(如图7)   第七步:当然我们还可以通过在客户端上执行iperf -c 192.168.0.199 -t 60 -i 2,这样将每隔两秒自动将测量结果显示出来,在最后再计算其平均值。(如图8)   通过简单的设置和简单的指令我们轻松实现了针对内网两个结点之间带宽传输速度的测量,当然iperf程序还支持很多参数,具体设置我们可以参考其帮助信息,比较常用的有-l 缓冲区大小,-m 显示tcp最大mtu值,-p 指定服务器端使用的端口或客户端所连接的端口,-u 使用udp协议,-w 指定TCP窗口大小,默认是8KB,-M 设定TCP数据包的最大mtu值等。另外在客户端上可以通过-n 指定传输的字节数,-r 单独进行双向传输测试,在服务端则可以通过-D参数以服务方式运行ipserf,以-R来停止iperf服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值