原文:http://blog.sina.com.cn/s/blog_4881040d0100zdq6.html
WAS 的负载使用说明(一)
一、准备工作
为了测试数据的准备性,首先需要删除缓存和Cookies等临时文件。启动IE后打开“工具”菜单下的“Internet”选项命令,在打开的“Internet选项”窗口的“常规”选项卡中,单击“Internet临时文件”区域的“删除Cookies”和“删除文件”按钮将临时文件删除。
WAS说明:WAS可以通过记录浏览器活动、导入服务器日志文件或评估WEB文件夹的内容来帮助创建测试脚本:
几种方式的比较:1、记录浏览器活动的方式以精确的方式捕捉所有用户的交互活动,任何从浏览器发往服务器的URL指向,应用程序参数HTTP头部信息都会被自动地记录在新的测试脚本里。
2、导入服务器日志文件的方法在站点已经进入投入使用阶段,有了真实的用户流量的情况下使用最好,但是,一个新的站点未必有这么多真实用户使用数据,进一步说,可能还需要合并大量的日志文件来达到较好的体现用户活动的目的,这将需要创建大量的测试脚本,蒋需要客户端更多的系统资源。
3、选取WEB内容文件夹的方法最好用在测试多数是静态HTML文件的站点,这种方法允许在已有服务器的WEB页面的基础上快速创建测试脚本,然而这种方法并不捕捉任何由大多数应用程序文件产生的参数)
二、录制测试脚本
WAS 的负载使用说明(二)
测试脚本的准备
1、在测试客户端机器上启动Web Application StressTool,在弹出的“建立新脚本”对话框中选择“Record”按钮;
2、在“Record”参数设置第一步中,所有的checkbox都不用选择,NEXT
到第二步时直接点击“finish”,点击后弹出一个IE窗口以便记录浏览器活动,同时WAS会被置于记录模式,在新出现的IE窗口的地址栏输入你的目的站点的地址,在WAS的窗口你将看到HTTP信息在跟随你的浏览活动而实时改变着,当完成了你的站点浏览后,返回WebApplication Stress Tool,停止Record(点击StopRecording按钮),终止记录并产生一个新的测试脚本(在右边的窗口将看到一个列出所有脚本的列表)。
3、将一些没用的记录删去(比如:/Apply/test/index.htm),只留下如下图所示的五条记录:
指定目标WEB服务器:Server默认地目标服务器为Localhost,修改为IP地址或目标服务器的域名
端口号不用输入。左边的窗口中改一下脚本名字,比如改为Joinwork Test;
4、5个测试用例在实际使用环境中被访问的概率是不一样的。我们可以在Page Groups中定义几个PageGroup来模拟这种访问分布:
在上图中我们定义了5个Group,分别对应:查询可启动流程列表、启动流程、查询个人待办工作任务、显示任务执行表单和执行任务,它们被点击的次数比率为:1: 1 : 5 : 5 : 4。
回到脚本主页面,分别将5条记录的Group改为刚才建立的PageGroup。这样在运行脚本的时候就会按Group定义的比率来产生点击了;
5、设置测试并发用户数和测试运行时间
到 如下图的Settings页面,通过Stress Level (threads)和Stressmulitiplters来设置并发用户数,Test RUnTime来设置测试时长。因为我们要做性能压力测试,不要设置延时时间(RequestDelay)。可以在实际测试时间之前,设置一段warmup运行时间,这段时间的数据是不会记录到最后的报告里的;其他设置可以保持缺省值不变;
测试运行
一切准备完成后,回到脚本主页面,然后点击工具条上的“Run Script”按钮就开始测试了;
测试报告查看
测试运行结束后,我们就可以通过点击工具条上的"Reports"按钮查看测试报告了;
测试报告里比较重要的数据是:每秒处理的请求数(Requests per Second)和每个页面的平均响应时间。
上面两张图的数据是笔者直接使用Joinwork开发版的缺省配置(JBoss3.2.2和JBoss自带的数据库Hsql),一台主频1.5M HZ(奔腾移动)、内存725M的笔记本作服务器,一台主频2.0MHZ的台式机作客户端,测试的数据。
数据显示在100并发用户数下,每秒可处理89.26个请求,其中响应时间最长的页面是任务执行,平均响应时间是1.66秒。
Web Application StressTool也可以采集服务器的CPU利用率等服务器端数据,有兴趣的话可以查看帮助文件。
Web Application Stress是Microsoft免费提供的一款软件专门对WEB服务进行压力测试用的工具软件。我经常会需要测试一些服务器的运行状态和响应时间什么的,比如在网络中新加了一台防火墙做好设置以后,它的改动对于网络中应用层的服务影响怎么样,客户会不会明显感觉到IE打开站点的速度明显减慢等等,尤其是在防火墙工作在透明代理模式下加上了一些对于应用服务的内容限制以后,设置前后速度上的改变都是非常重要参考数据的,我需要知道到底速度的影响有多大是否可以忽略不计。
部分数据解析
下面我们用其进行一次简单的压力测试。
打开主程序,点击"Record"按钮,选择"Record Delay betweenrequest",然后"next",再"finish"。接下来会弹出一个浏览器,输入所要测试的WEB服务器地址,随便浏览一些页面,然后将其关闭,返回到WebApplication Stress中,点击"stoprecording"按钮。点击"Settings",就可以进入设置界面,填入一些参数。在此例中,threads我填入了50,runtime我填入了2分钟,其它默认。然后选择"Scripts"菜单项中的"Run",对服务器进行压力测试,等待2分钟。
结束后,选择"Window"下的"Reports",可以看到类似于下面的压力测试结果(我已经将其简化了)。
============================================================
Number of testclients:
Number ofhits:
Requests perSecond:
Socket Statistics
------------------------------------------------------------
SocketConnects:
Total Bytes Sent (inKB):
Bytes Sent Rate (inKB/s):
Total Bytes Recv (inKB):
Bytes Recv Rate (inKB/s):
Socket Errors
------------------------------------------------------------
Connect:
Send:
Recv:
Timeouts:
RDS Results
------------------------------------------------------------
SuccessfulQueries:
下面对其进行简单解释。测试时间内,虚拟的用户点击页面6121次,平均每秒51个请求,Socket连接数6163,其中没有连接、发送、接收、超时错误。从这个压力测试报告来看,服务器对于50个用户同时操作,应该没有任何问题。需要特别说明的是,这个只是简化的部分结果。
这只是一个简单的示例,Web Application Stress的功能远不止于此,还需要在实践中总结才是。