压力测试案例分析
1.客户背景介绍
中国联合网络通信有限公司XX省分公司是中国联合网络通信有限公司在XX省内的分支机构,是国家授权许可经营移动通信业务、互联网业务、数据通信业务、国际国内长途电话通信业务等综合业务的电信运营商。
2.压力测试拓扑图
压测拓扑图如下所示,在测试过程中,拓扑图可能会根据测试内容改变:
3.测试服务器性能要求
资源列表数量及参数
Loadrunner测试机器(客户提供)2台高性能服务器(4GB内存,千兆网卡,四核CPU,Windows server2003 SP2 32bit)
VPN7150(深信服提
供)
1台
IIS服务器1台高性能服务器(4GB内存,千兆网卡,四核CPU,Windows
server2003 SP2 32bit),安装好IIS
Loadrunner 1套(本次用的是V9.5)
注意:Loadrunner(以下简称LR)在测试VPN加解密速度时,对CPU的占用率较高,所以客户准备服务器的时候,尽量让CPU高端些,免得到时候瓶颈在服务器上,客户误以为我们设备跑不到那么多的吞吐量。
要做压测的客户都是大客户,准备这几台服务器应该没问题。
4.测试环境搭建
4.1.拓扑搭建
关于物理拓扑的搭建,就如上图所示即可,条件允许的话,可以再增加一台千兆交换机,将自己的笔记本与服务器另外一个网卡连接起来,便于远程桌面管理和截图。
注意:由于LR运行某些脚本时数据流很大,测试网络需与客户业务网络物理隔离,千万别沿用客户原来的路由交换设备跑测试数据,不然会影响业务甚至中断业务。
4.2.搭建Web服务器,安装LR
IIS的安装不多说。
但是有一点要注意下,不要使用一些小的Web服务器(如小旋风ASP服务器,HFS等)来代替IIS,我第一次使用HFS试了一下,并发跑上来后,直接阻塞掉,本次测试需要跑到10000个并发。
安装LR前,需要先给server2003系统打上NET Framework V3.5 SP1包。
这次测试使用的是Loadrunner9.5版本,emule上有云端版下载(http://bit.ly/rOOUDJ),直接用32bit英文版即可,汉化版有时会出问题。
云端版安装后无需破解授权,直接可以使用,安装完毕如下图所示:
组件,但是我们做VPN压测的时候,只要用到2个:Controller和Virtual User Generator,在打了NET Framework V3.5 SP1包的前提下,如果这2个组件还不能
运行的话,请分别修复VS2005,VS2008运行库:
搞完这些后,运行LR应该没什么问题了。
如再有问题,自行Google。
前面提到了LR的2个组件,Controller和Virtual User Generator,这里来做一个简单的介绍。
Virtual User Generator是用来录制脚本用的,也就是说,你要告诉压测服务器如何去运行,录制脚本就相当于定义好压测机的行为。
这个在下文会详细体现出来。
Controller的任务就是载入Virtual User Generator录制好的脚本,然后设置各项参数,进行压测。
一句话:Virtual User Generator是动作的定义者,而Controller是动作的执行者。
安装介绍到此结束,下面介绍LR的使用。
5.一个简单的例子
5.1.使用Virtual User Generator录制脚本
打开Virtual User Generator,点击,新建一个脚本录制页面。
选择脚本的类型为Web(HTTP/HTML):
接着设置录制参数,如果没有弹出这个页面,可以点击,其他参数如下,URL Address填登陆VPN设备的地址(我这里使用WOC模拟一下,实际环境按需填写),Record into Action里选择为Action即可
确定后,会出现一个Recording的控制条,这里有点慢,请耐心等待一下,最后出现证书提示页面,这里既然是录制,就要你手动先示范一遍让LR记录下来。
我这里就模拟一次登陆WOC后再退出的行为,作为一个事物记录下来,比如对VPN的测试,你可以模拟用户登陆VPN,然后访问一个资源,然后退出等。
继续录制,直到退出WOC,退出后,点击停止,这时候可以看到,已经产生了1494个events:
停止后,LR会自动编译,输出代码,可以看到,我们刚才录制的脚本存储在Action里,而前面的init,后面的end等函数可以不用管,LR的函数和C语言类似:
我在录制登陆WOC的事物时,中间有些地方人为停顿的时间较长,在实际测试时,可以在代码里找到相应的lr_think_time(8);函数,修改time()里面的值,到达灵活控制停顿时间的目的。
接着将录制好的脚本保存下来。
5.2.Controller加载脚本运行
运行Controller,软件会自动加载刚才录制的脚本,我们add脚本到右边:
以下是Controller运行的主界面,请注意底部有2个选项卡,分别是Design和Run,Design是设定运行参数的地方,Run选项卡则是运行时的状态和运行结果实时回显,下面
分模块简单介绍各个运行参数的设置:
如下图,首先需要载入一台发生器,这里我们点击ADD后,在Name里输入localhost
即可,加载本地发生器:
接着设置Gloabal Schedule,这里的参数非常重要,定义了虚拟用户(Vusers)初始
化个数,有多少个Vusers在跑,跑多长时间,停止时间等,这里根据实际需求来设置,通
过设置参数,可以让Vusers运行时与真实环境下海量用户同时登陆的动作类似:
至此,参数设置完毕,直接运行:
运行时,会有实时图表反馈运行结果:
当然,也有不能运行的,这时,你需要激活发生器,connect后,LR可以正常运行:
可以点击这个图标对结果进行全面的分析,并保存分析结果:
以上是LR使用的一个最简单的例子,大家在学习LR的时候,可以多利用搜索引擎,
多翻翻LR的帮助文件。