运用WAS进行WEB负载测试随着网络服务器端处理任务的日益复杂,以及网站访问量的迅速增长,服务器性能的优化已成为非常迫切的任务。
在性能优化之前,测试不同条件下服务器的性能表现,并找出影响性能瓶颈所在,将是Web设计性能改善方案的重要依据。
在构造一个Intranet 网站时,负载测试是任何Web 应用开发周期中一个重要的环节。
在构造一个为大量用户服务的应用之前,搞清楚产品配置能够承受多大的负载十分重要,测试能够暴露出最终会导致服务器崩溃的内存泄漏、访问阻塞等情况。
但是在实际的构建过程中,若要按照系统真实运行的情况,组织成千上万的用户来进行压力测试,无论从那个方面进行实施,都是不现实的。
因为一旦发现了问题,不仅需要重复的进行这种耗费资源巨大的测试,而且问题并一定能够重现,并不能方便的找出性能的瓶颈或问题所在。
解决这个问题的办法是通过使用软件的办法解决,通过进行软件模拟的方法进行,这就是负载的压力测试。
无论哪种情形,对运用软件进行负载测试可以获得重要的基准性能数据,为未来的代码优化、硬件配置l e x y以及系统软件、硬件更新与升级带来依据和提供数据。
1 Web服务器负载测试软件介绍WAS(Microsoft Web Application Stress Tool,Web 应用负载测试工具)提供了一种简单的方法模拟大量用户进行访问目标网站。
这个测试工具能够提供Web 应用程序工作时对硬件和软件的使用情况。
为了有效的对Web 应用程序进行负载(压力)测试,Microsoft 发布了简单易用,功能强大的工具WAS。
WAS 要求具备的操作系统必须是Windows NT 4.0 SP4 或者Windows 2000 Server,Internet Explorer 4.0 以上版本。
为了对网站进行负载测试,WAS 可以通过一台或者多台客户机模拟大量用户访问Web网站的活动。
WAS 支持身份验证、加密和Cookies,也能够模拟各种浏览器类型和Modem 速度,它的测试功能和性能表现良好。
使用WAS时,为了更加接近真实的进行压力测试,通常推荐运行WAS的测试机和Web服务器分开。
2 Web Application Stress Tool的设置及其操作2.1 主界面窗口第一次安装完W AS后,可在本机操作系统(以Windows 2000 Server为例)中找到主界面,通过单击执行,其步骤是:开始->程序->Microsoft Web Application Stress Tool。
第一次执行时会出现一个Create new script 的界面。
2.2 制作生成脚本1.开始使用WAS要对网站进行负载测试首先必须创建WAS 脚本模拟用户的活动。
可以用下面四种方法之一创建脚本:l通过记录浏览器的活动。
l通过导入IIS 日志。
l e x yl通过把WAS 指向Web 网站的内容。
l手工制作。
这里通过最常用的方法——通过记录浏览器的活动来讲解。
其他三种方法在后面将会提到。
图1 简单的Script(脚本)界面2.录制测试脚本在录制测试脚本前,需要首先关闭IE 的缓冲区。
(1)在工具菜单,点Internet 选项(2)点常规标签,然后点删除文件按钮。
如果使用IE5.0 或以上版本则不需要修改代理设置,因为5.0 以上版本的IE 允许WAS改变这些设置。
而对于IE4.0 或早期版本,WAS 使用一个内置的代理服务器来记录浏览器活动。
按WAS 的需要指定代理设置:l在工具菜单,点Internet 选项。
l在连接标签里,修改代理设置以使代理服务器指向Localhost,并且使用端口8000。
l不选“对于本地地址不使用代理服务器”选项。
l 打开菜单,选择Scripts|Create|Record创建一个测试脚本。
选取要记录的内容,有下面3 种。
l e x y图2Record delay between request:记录了请求之间的延迟。
由于用户实际上在浏览网站时,对于请求之间存在几秒甚至几分钟的延迟,这种录制方法在执行时会模仿用户之间的延迟发送请求,所以会是一个更加实际的测试。
如果测试的目的是要发现Web 应用程序的承受极限,就不要选择该项;如果只是想模拟一个特定数量的用户场景,那么选择该项进行测试捕捉请求延迟。
Record browser cookies & Record the host header:只记录用户的会话,不记录延迟时间。
一般情况下,不需要选择这两项,可以让WAS 创建cookies 和host header,这就如同用户登录某个网站一样。
然而,如果有网站的回归信息时(比如一个用户的主要特征信息或者与一个永久性cookies 相连的其他信息),在模拟一个新的用户登录网站和进行必要的用户配置测试前,必须保证清除cookies,如果Web 应用程序需要用户接受cookies,那么需要选中该选项。
目前这个版本的WAS 软件对基于浏览器IE录制脚本的方式还不支持HTTP/SSL 请求。
一般情况下,只选择后二种会增加压力的强度。
根据压力测试实际的情况,选择合适的选项,然后点“Next | Finish”,WAS会打开一个IE窗口,在IE中输入要测试的站点地址,然后就可以按照实际的情况开始浏览站点了,浏览的同时也就是执行测试用例的过程。
图3 测试前确定站点地址等测试用例执行完成后,切换到WAS 窗口,点“Stop Recording:”按钮,停止录制脚本。
图4 录制结果WAS 回到了视图页面,在该页面中可以看到在录制过程中WAS 收集的每一个链接,并且还可编辑GET 、POST 以及HEAD 信息。
制作WAS 脚本较为简单,但要制作出模拟真实用户活动的脚本有些复杂。
如果已经有一个运行的Web 网站,可以使用Web 服务器的日志来确定Web 网站上的用户点击分布。
如果应用还没有开始运行,那么只好根据经验作一些猜测了。
l ex y图5 使用Web服务器日志来确定Web 网站上的用户点击分布l e x y3 负载参数设置测试脚本录制完成后,下一步要作的就是配置运行脚本的负载选项,可以调整测试配置以便观察不同条件下的应用性能。
3.1 目录树(Content Tree)由于WAS 和Web Server 是分开的,所以这里不需要进行设置。
3. 2 负载选项的设置(Setting)点击“Setting”即可开始负载选项的设置。
1. ConCurrent ConnectionsStress Level(threads)的数值决定了所有客户机创建的Windows 的线程的数值。
每一个线程创建多个Socket 连接(具体多少Socket 连接数取决于Stress multiplier(sockets per thread)),每个Socket 连接就是一个并发的请求(request)。
l e x y图6 创建多个Socket 连接下面这个公式表示了它们之间的关系:总的并发请求数= Stress Level * Stress multiplier = 总的Socket 连接数Stress Level 和Stress multiplier 这二项决定了访问服务器的并发连接的数量。
Microsoft 建议不要选择超过100 的Stress Level 值。
如果要模拟的并发连接数量超过100 个,可以调整Stress multiplier 或使用多个客户机。
在负载测试期间WAS将通过DCOM 与其他客户机协调。
2. Test Run Time设定持续运行多长时间的测试。
可以设定让WAS 持续运行多少天、多少个小时、多少分钟、多少秒。
3. Request Delay(in milliseconds)设定请求延迟时间的最大、最小值,当然也可以选择“Use random delay”使用随机的延迟时间。
一般情况下,常常会浏览一页,发现一个链接后,点击它。
即使是对该网站熟悉的人,4. SuspendWAS 允许设置warmup(热身)的时间,一般可以设置为1 分钟。
在热身期间WAS 开始执行脚本,但不收集统计数据。
热身时间给MTS、数据库以及磁盘缓冲等一个机会来做准备工作。
如果在热身时间内收集统计数据,这些操作的开销将影响性能测试结果。
WAS 也允许设置CoolDown 时间。
在WAS 执行的时间达到设定的Test Run Time 时,进入CoolDown Time ,这时WAS 并没有停止执行脚本,同样也不会收集统计数据。
下图表示了它们的先后关系。
图7 WAS 进行工作的三个阶段WarmUp :不收集统计数据Test Run Time :收集统计数据CoolDown :不收集统计数据5. Bandwith (带宽)设置页面提供的另外一个有用的功能是限制带宽(throttle bandwidth )。
带宽限制功能能够为测试模拟出Modem (14.k K ,28.8 K ,56 K )、ISDN (64 K ,128 K )以及T1(1.54 M )的速度。
使用带宽限制功能可以精确地预测出客户通过拨号网络或其他外部连接访问Web 服务器所感受的性能。
6. Redirects 、Throughput 、Name resolution这几个选项一般情况下采用默认情况即可。
选中Follow HTTP redirects 选项将会支持重定向。
选中Throughput 中的两项,WAS 将会收集活动用户的cookies ,以及收集网站的统计数字。
默认情况下都会选中这两项,如果不选择,将会增加压力测试的强度。
Name resolution 默认情况下没有选中。
选中该选项,会让每一个客户测试机执行查询,只有在使用多个子网时才需要选中该项。
3.3 Perf Counters (性能计数器)使用WAS ,从远程Windows NT 和Windows 2000 机器获取和分析性能计数器(Performance Counter )是很方便的。
加入计数器要用到下图所示的Perf Counters 分枝。
l ex y图8 Perf Counters 分枝一般情况下,这里需要添加的性能计数器有:1. Web Server· 处理器:CPU 使用百分比(% CPU Utilization )· 内存:内存使用百分比(% Memory Utilization )· 线程:每秒的上下文切换次数(Context Switches Per Second (Total))· ASP :每秒请求数量(Requests Per Second )· ASP :请求执行时间(Request Execution Time )· ASP :请求等待时间(Request Wait Time )· ASP :置入队列的请求数量(Requests Queued )2. 各个WAS 测试机· 处理器:CPU 使用百分比(% CPU Utilization )· 内存:内存使用百分比(% Memory Utilization )在测试中选择哪些计数器显然跟测试目的有关。