Microsoft Web Application Stress Tool负载测试
记录脚本
在你的浏览器和客户端已经准备好记录后,做下面的操作:
1. 当你第一次运行WAS时,你会看到一个Create new script的对话框(Figure 1),询问你以什么样的方式创建一个新的测试脚本。
2.点Record 按钮 。如果之前你选择了Don't display at startup,Create new script将不会显示出来。你可以在Script菜单选择Record 然后 Create.
3.在Browser Recorder — Step 1 of 2对话框,你会被要求指定一些记录设置。在这里,清除所有的选择框点Next继续。
4.在Browser Recorder — Step 2 of 2对话框,点Finish。一个新的IE窗口会出现以便记录浏览器活动,同时WAS会被置于记录模式。
5.在新出现的IE窗口的地址栏,输入你的目的站点的地址。在WAS的窗口你将看到HTTP 信息在跟随你的浏览活动而实时改变着。
6.当完成了你的站点浏览后,转回WAS窗口—还处于记录状态—点Stop Recording按钮。就会终止记录并产生一个新的测试脚本。
在右边窗口的底部,你将看到一个列出所有脚本的列表。
对于需要安全连接的站点,WAS支持SSL页面。然而不允许SSL的记录。要解决这些限制,你可以在服务器端关掉SSL,记录脚本,然后再重新激活服务器上的
设置测试脚本
新录制的脚本还不能立即用来测试。还必须完成以下设置:
· 调节脚本项和他们的属性
· 调节测试脚本的测试
· 建立页面组和点击百份比
· 建立用户帐号
· 建立客户端
· 建立性能计数器
设置并发连接数
在设置里的Concurrent Connections部分,你可以指定Stress level (threads)的值和Stress multiplier (sockets per thread)来控制对目标服务器的压力/负载程度。Stress level是全部客户端所产生的Windows NT线程的总数。每个线程能产生多个socket而每个socket就是一个并发的请求。
以下公式解释了他们之间的关系:
Total Concurrent Requests = Stress level (threads) x Stress multiplier
(sockets per thread) = Total Number Sockets
在我们的实验室,我们使用不同的Stress层次来 性能测试。例如,我们使用过100, 200, 300, 400, 500, 750, 1000, 1500,和2000的值来连续测试以研究我们的服务器群组是如何对连续增长的负载作出反应的。
你应该在初步测试的结果基础上调整这些数值。通常来说,你需要在低负载度时收集更多的数据点,因为这时候系统的吞吐量会随线程的增长而线性增长。另一方面,你可以在高负载度时运行较少的测试以节省时间和精力,尤其是系统吞吐量已经高于峰值时。
注意我们的第一次测试将设定在1000个线程。目的是运行足够的请求以建立我们程序的数据缓冲。因为程序的性能会因为有没有缓冲而表现大不相同,这将帮助我们为负载测试保持一个一致的环境。
设定测试运行时间
在设置视图的Test Run Time部分,你可以以日,小时,分钟,秒来设定总的运行时间。取决于你的脚本项的预期反应时间,建议你运行测试脚本至少若干分钟以便产生足够的请求,避免变形的测试结果。你的程序的反应时间越高,测试进行的时间就应该越长,以便产生大量的数据。
你可以运行短而密集的测试以便监测你的站点的任何问题。另外,你需要运行更长的测试时间(例如,30天),看看你的站点的性能是否随时间而退化,尤其是在中级或高级的负载压力下。
在Duwamish Online这个站点,大多数的性能测试都运行7到10分钟,以便有足够时间来稳定测试结果。
指定用户
测试需要署名登录的Web站点时,WAS提供一个特性叫做Users,可用于存储多个用户的用户名,密码和cookie信息。
当一个测试开始时,所有的用户被分配到给定压力系数设置的各线程中。当请求开始时,每个线程使用从与该线程连接的共享池中获得的用户名,密码,和cookie。如果WAS配置的用户数比线程少,一些线程就会没有用户—所有的署名登录页面会登录取失败,任何与cookies的交互会被禁止。所以,当测试需要个人认证的网站时,拥有的用户数比线程多是很重要的。
对于可以在WAS中创建的用户数没有硬性的规定和限制。然而,因为每个用户都会需要一定的内存和资源,所以如果使用大量的用户,将会使你的测试启动和停止时间更长些。
创建新用户
1.在左边窗口展开脚本的信息
2.点Users节点在右边窗口打开相应的视图
3.双击Default用户组打开用户视图。
注意默认已经创建了100个用户。你可以简单地修改用户名和密码就行了。
你也可以做以下操作来创建一系列新的用户
1.点Remove All清除所有的记录
2.在Number of new users,输入你想创建的新用户的数量
3.在User name prefix,你可以在用户编号的前面输入前缀值,例如“User.”
4. 在Password,输入密码。相同的密码会赋给所有用户。
5.最后,点Create按钮。用户表单就会填满指定数量的用户
如果你想使用定制的用户名和密码列表,你可以从一个预定格式的文本文件导入它们。参考WAS帮助文件的“Importing user names and passwords”部分。
运行测试脚本
一旦你设置好了测试脚本,就准备好了在你的客户机运行脚本
启动主客户端的测试
1.点需要测试的脚本
2.从Scripts菜单选Run
也可以点工具栏上的Play按钮运行脚本。
检查测试报告
测试完成后,你应该先检查测试报告看是否有socket 或 HTTP错误
从报告中检查这些错误
1.从View菜单选Reports打开相应的视图,见Figure 7.
2.在左边窗口,双击脚本打开测试报告,如果需要的话
3.点测试报告名(有测试运行时间指定),如果需要的话。你会看到右边窗口显示报告的概要。
4.在报告概要,检查Socket Errors部分是否有任何的socket有关的错误(值不为0)。这里列出每种socket错误的解释:
·Connect—客户端不能与服务器取得连接的次数。如果这个值偏高,检查在客户端与服务器之间产生的任何潜在的错误。从每个客户端Ping服务器或telnet服务器的端口80验证你得到正确的回应。
·Send—客户端不能正确发送数据到服务器的次数。如果这个值偏高,检查服务器是否正确地工作着。在客户端打开一个浏览器然后手工点击站点页面验证站点正确地工作着。
·Recv—客户端不能正确从服务器接收数据的次数。如果这个值偏高,执行和Send错误相同的操作。还要检查一下如果你减低负载系数,错误是否跟着减少。
·Timeouts—超时的线程的数目,而且随后就关闭了。如果这个值偏高,在客户端打开一个浏览器然后手工点击站点页面验证是否即使只有一个用户你的程序也会很慢。再做一个不同负载系数的压力测试,看看你的程序的潜在特征。
5.如果socket错误很低或为0,拉下报告视图找到Result Codes部分。
6.检查一下是否所有结果代码都是200,表示所有请求都被服务器成功地返回了。如果找到大于或等于400的结果,继续下面的步骤以查找哪个脚本项(URL)产生这些HTTP错误的。
7.在左边窗口展开脚本信息
8. 双击Page Data节点展开所有的脚本项
9.点每个脚本项在右边窗口看页面数据的报告
10. 在每项脚本的页面数据报告检查Result Codes部分,验证是否有那项产生了HTTP错误。如果要看常见的结果代码列表,请参考WAS帮助文件的"HTTP result codes"部分。
任务管理器测试前和测试时效果图:
测试前:
测试时:
CPU已接近100%,说明1000个用户同时访问,服务器会崩溃掉。