在 MS 的网站上发现了一个挺不错的小东西: MS Web Application Stress Tool (was) 。这是一个 web 应用压力测试工具。它是免费的,这一点很重要,否则 MS 的版权大棒又要来了。
如今 B/S 结构横行,基于浏览器的应用多如恒河沙数。我们也投入了太多的时间在 web 技术上,我们努力提高开发效率,花大量时间研究各种脚本,轻量级框架, mvc 框架,也许我们可以多投入一些时间关注一下系统执行效率,做做压力测试。
Was 的使用非常简单,只需要配置好测试脚本,它就可以开始运行,然后给你一个非常详细的报告。脚本的配置有多种方式:
◇ 自行编写测试脚本
◇ 让 was 记录你在 IE 中的操作
◇ 让 was 读取 server 的 log ,生成脚本
◇ 指定 url 地址,生成脚本
我的原则是速战速决,对于这样一个小工具,没有必要花太多时间去研究细节,让它自己记录我的 IE 操作吧,下面列出操作过程。
选择菜单: scripts_create_record ,在出现的窗口中选择记录哪里信息,全选也无所谓, next__finish ,系统会弹出一个 IE 窗口,该窗口中的所有 request-response 都会被记录到测试脚本中。需要注意的是该窗口需要比较高的权限,所以请暂时关闭上网助手之类、广告拦截之类的东西。
在该窗口中你可以随意操作你的 web 程序,把要测试的模块都跑到。完成之后直接关闭 IE ,然后点击 ”stop recording” ,一个测试脚本就完成了,实在够傻瓜,不愧是 MS 的东西啊,体贴我这类懒人。
展开刚建好的测试,选择 ”setting” ,指定 Stress level(threads) 的值,同时连接 server 的并发数。 Ok ,选择菜单: scripts_run ,开始折磨你的机器吧。
测试完成之后,选择菜单: view_reports ,可以看到测试结果报告。相当详细,多少次操作,多少数据量,每个页面花多少时间都看得一清二楚,爽啊。
测试报告中,有两个术语很重要,在 ”page summary” 中,有两个指标: TTFB 和 TTLB 。
TTFB Avg 是指:从第一个请求发出到测试工具接收到服务器应答数据的第一个字节之间的平均时间。
TTLB Avg 是指:从第一个请求发出到测试工具接收到服务器应答数据的最后一个字节之间的平均时间。
【IT168 专稿】互联网的普及,宽带的流行,使得越来越多的个人和单位都架设了自己的网站。而充当网站的服务器的大多是普通的PC或者低档服务器,这样访问者人数一多或者遭受DDos攻击,很容易造成瘫痪。因此我们需要网站在真正发布前对其进行压力测试,即让少量的客户端计算机或一台计算机仿真模拟出大量用户同时访问,以获得服务器的承受能力。在此我们可以借助微软的网站测试人员开发的一款名为Web Application Stress Tool(简称WAS)的工具来完成,其下载地址为http://download.microsoft.com/download/a/8/2/a82e7ba7-c772-4ec4-b186-2cf147f42c11/setup.exe。
一、准备工作
为了测试数据的准备性,首先需要删除缓存和Cookies等临时文件。启动IE后打开“工具”菜单下的“Internet”选项命令,在打开的“Internet选项”窗口的“常规”选项卡中,单击“Internet临时文件”区域的“删除Cookies”和“删除文件”按钮将临时文件删除。
二、录制测试脚本
安装并启动WAS,程序运行时会打开“Cteate new script”对话框,即建立一个新的脚本窗口(如图1),如果运行WAS没有打开该窗口可以单击WAS主程序窗口工具栏上第一个按钮“New Script”即可。
![]() |
图1 |
因为是初次使用,所以在新建脚本窗口上单击“Record”按钮打开创建向导对话框“Browser Recorder-Step 1 of 2”,其中三个选项的作用是选择要记录的内容,分别为Request(请求)、Cookies(网上信息块)以及Host headers(主机标题),可根据需要选择(图2),然后单击“Next”即会打开“Browser Recorder-Step 2 of 2”窗口,单击“Finish”按钮。这样WAS会自动启用,并且会打开一个浏览器窗口,此时我们就可以在浏览器的地址栏中输入要测试的网站网址。随着要测试的网站内容的不断显示,在WAS主界面的“Recording”选项卡中的信息会实时更新(如图3)。
![]() |
图2 |
![]() |
图3 |
当浏览器的状态栏显示为“完成”时,我们就可以返回WAS窗口,单击“Stop Recording”按钮返回脚本窗口。
三、测试设置
为了使测试更加准确,更加接按真实效果,需要对录制的测试脚本进行一些设置。
去除静态干扰
由于网页是由图片、文字以及其它动态源码组成的,而一般的静态内容消耗的带宽并不是很大,因此我们可以将其排除在外。在脚本中选中指向图像、文字以及其它静态文件项目前的灰色按钮,然后单击工具栏上的“Delete”按钮将其删除(图4)。
![]() |
图4 |
设置并发数
然后在单击“New Recorded Script”下的“Settings”标签,其中“Concurrent Connections”是设置并发连接数的,其下面的“Stress level (threads)”和 “Stress multiplier(sockets perthread)” 分别设置对目标服务器的压力及负载程度的,其中Level是客户端所产生的线程数目,一个线程可以产生多个Socket并发请求,因此将两者的数值相乘,所获得的数字就是客户端同时连接的并发数(图5)。
![]() |
图5 |
时间设置
时间设置包括“Test Run Time”(测试运行时间)和“Request Delay”(停止响应)以及“Suspend”(挂起时间)三项。其中测试运行时间是以日、小时、分钟和秒来设定的,建议该项时间不宜太短,如果设置的并发数较多,那么时间应该按比较增长,以便产生足够多的请求;而停止时间是指连接时超出这个时间即作超时处理;在挂起时间处部分为Warmup和Cooldown两项,一般可以设置为两三分钟为宜,这样做的目的是避免测试开始和结束时数据的变形,影响测试的准确性。
指定带宽瓶颈
“Bandwith”是指定带宽瓶颈的,即选择访问该网站大多数用户所使用的带宽。例如访问该网站的绝大部分用户是拨号,那么可以选择56K。
四、开始测试
做好基本的设置工作后,就可以在左侧选中新建的脚本“New Recorded Script”项,然后单击工具栏上的“Run Script”按钮,或者打开“Scripts”菜单下的“Run”命令,这样就开始测试了。测试过程中会以进度条的方式实时显示,待进度条结束我们即可进行测试结果分析了。
五、数据分析
现在我们就可以打开测试报告来查看测试结果了。单击“View”菜单,选择“Reports”,在打开的窗口左侧会按时间显示所有测试报告。根据时间选择本次测试报告,在窗口右侧即可查看具体内容。
在测试报告中最重要的部分就是“Socket Errors”部分和“Result Codes”部分。其中Socket Errors部分共分为Connect、Send 、Recv和Timeouts。其中Connect表示客户端不能与服务器取得连接的次数;Send表示客户端不能正确发送数据到服务器的次数;Recv表示客户端不能正确从服务器接次的次数;Timeouts表示超时的线程数目。由此我们可以如果这四个数值都比较小,甚至为0则说明我们的服务器是经得起考验的;如果数值居高不下,甚至接近设置的并发数,那么则要好好的检查你的服务器了(图6)。
![]() |
图6 |
另外在“Result Codes”部分,如果Code列表下的数值都为200,那么表示所有请求都经服务器成功返回,如果数值出现400或大于400,例如404,那么则需要在左侧找到“Page Data”节点,查看具体的错误项目,然后作出改正了。
其实要完整的反映出一个网站在服务器上的运行情况,需要不断增减其并发数,并且进行多次测试,才能了解服务器所能承受的限度,然后才可以在IIS中设置允许连接的最大数目,从而保证网站正常运行。