在loadrunner的虚拟用户中,术语concurrent(并发)和simultaneous(同时)存在一些区别,concurrent 是指虚拟场景中参于运行的虚拟用户。
而simultaneous与集合点(rendzvous point)关系更密切,是指在同一时刻一起执行某个任务的虚拟用户。
1、下面以登录脚本为例,进行演示:
Action()
{
//添加集合点,场景中如果想使用集合点策略,脚本中必须要添加集合点
lr_rendezvous("登录集合点");
//添加登录事务
lr_start_transaction("登录");
//登录
web_custom_request("login",
"URL=http://********:8080/mobile/api/user/login ",
"Method=POST",
"TargetFrame=",
"Resource=1",
"Referer=",
"Mode=HTTP",
"EncType=application/json ",
"Body={"mobile":"131********","password":"123456"}",
LAST);
lr_end_transaction("登录", LR_AUTO);
return 0;
}
2、打开Controller,设置虚拟用户数10个:
3、点击菜单中的“scenario”的选项菜单。
4、下拉菜单中选择“rendezvous”的选项即可。
5、我们可以看到Vusers 列表框里有10个集合点(1~10),这里的数量和我们设置的虚拟用户数一致。
可以点击选中某个集合点,点击“Disable VUser” 按钮,使其不参与集合点。
6、点击“Policy...”来设置集合点的策略:
下面来看看这三种策略的含义:
1)、Release when :当所有虚拟用户中的x % 到达集合点进释放,即仅当指定百分比的虚拟用户到达集合点时,才释放虚拟用户。
注意:此选项将会干扰场景的计划。如果选择此选项,场景将不按计划运行。
例如:场景设置如下,10个用户,每30秒启动2个用户:
集合点策略如下设置:
运行场景如下:
刚开始启动2个用户
当用户数为4个时,开始运行
当集合点不足4个时,就等待:
2)、Release when :当所有正在运行的虚拟用户中的x %到达集合点时释放,即仅当场景中指定百分比的、正在运行的虚拟用户到达集合点时,才释放虚拟用户。
还有不在运行的虚拟用户? 假如,设置为1分钟启动一个用户,当然会存在因为用户还没启动,所以无法参与集合点。
场景设置如下:
集合点设置策略为:
刚开始启动4个用户:
集合点不足50%时,就等待:
3)、Release when : 当x 个虚拟用户到达集合点时释放,即仅当指定数量的虚拟用户到达集合点时,才释放虚拟用户。
这个很好理解,当我用百分比不太好衡量集合点的虚拟用户数,当然可以设置具体的用户数。
场景设置如下:
集合点策略设置如下:
场景运行中的截图:
初始化4个用户,都到达集合点
等待第六个用户到达集合点
4)、Timeout between Vusers (虚拟用户之间的超时)框中输入一个超时值。
假如设置了集合10用户并发,结果9个用户已经集合到位,还剩1个虚拟用户,左等右等就是等不来。那总不能一直等下去吧。设定了个时间,假如30秒还不来,那就不管它了。
超时的时长默认是30秒,我们可以根据具体的被测应用进行调整。
说明:
实际工作中,除了测试秒杀和模拟瞬间的并发,其他情况下用集合点的很少。
补充:
如果一台负载机不足时,还可以添加多台,只需在其他服务器上安装loadrunner的Controller即可,添加方式如下:
点击Add后,输入一下信息即可添加成功:
添加完成后,就可选择了。