背景
LoadRunner 执行过程中,有的user 跑的快,有的跑的慢。就导致user1可能还在执行 登录操作呢,user2都已经开始执行查询操作了。
但是在进行负载测试时 ,我们又需要让很多用户同时执行一个任务。比如我这时候需要让30个用户同时开始查询。那我们就需要在查询操作前面添加一个集合点。意思就是我需要30个用户在这个地方集合,然后同时释放进行查询操作。
这时候第一个用户执行到集合点的时候,并不会继续进行查询操作,而是等待其他用户到达。等到30个用户都到达这里的时候,再一起执行查询操作。
添加方法
1. 在要添加集合点的地方,右键 –> Insert –> Rendezvous。
2. 输入集合点名称,比如“登录”。点击OK。
lr_rendezvous("登录");
设置集合点策略
打开Controller,导入添加了集合点的脚本。
点击 Scenario –> Rendezvous ,打开 Rendezvous Information 弹出框。
Rendezvous:这里会列出当前场景中所有脚本中的集合点名称。
Scripts: 选中某个结合点名称之后,这里列出含有该集合点的脚本。
Vusers:这里列出所有的用户。这里的用户数和Scenario Groups里面该脚本设置的Quantity是一致的。
Disable Rendezvous:就是把某个集合点给Disable。
Policy:这里有3种集合点释放策略。下面的x、y、z可以随意更改。
- 方式一:当 x% 的所有用户到达集合点时释放。比如一共10个用户,这里x是30%,那么只要3个用户到达该集合点就可以释放。
- 方式二:当 x% 的所有running状态的用户到达集合点时释放。用户除了running状态还有其他状态,比如说down、Pending之类的。这里假设一共有10个用户,有5个是running状态的,这里x是20%,那么只要1个用户到达该集合点就可以释放。
- 方式三:当 y个用户到达结合点时释放
- 超时设置:就是设定集合的超时时间。假设这里设置30秒,然后第N个用户到达集合点了,等待30秒,第N+1个用户还没到达,那么Controller会从集合点释放所有的用户。注意的是每个用户到达都会check这个超时时间,一旦30秒之内没有第二个用户到达,集合点就会释放。
Disable VUser: 让某个用户不参与该集合点。
Status Inforamtion:可以实时反馈该集合点的情况。
- Current Status:当前有多少虚拟用户到达集合点 of 该集合点相关的虚拟用户一共是多少。
- Time:虚拟用户在当前集合点被释放的时间。
- Reason:虚拟用户在当前集合点被释放的原因。一般都是 Timeout 或者 Arrived。
运行场景时候,我们可以在Scenario groups 里面查看集合点用户情况,也可以点击Vusers 按钮查看详细的用户情况。
注意事项
1. 集合点设置灰色不可点击的情况
如果场景中的脚本不含有集合点,那么 Scenario –> Rendezvous 按钮是灰色不可点击的。
如果场景中的脚本含有集合点,同时 Scenario –> Rendezvous 按钮还是灰色不可点击,那么有可能是在打开New Scenario的时候,选中了 Use the Percentage Mode 。解决方式就是重新打开同时不要勾上Use the Percentage Mode ,或者选择 Scenario –> Convert Scenario to the Vuser Group Mode .
2. 集合点应该放在事务外。
如果事务内存在集合点,那么虚拟用户在集合点等待的时间也会被算入事务时间,导致早进入集合点的虚拟用户的事务时间过长。
3. 集合点仅对Action起作用。 在vuser_init 以及 vuser_end 里面无法插入检查点。
4. 集合点是分批次的。如果有100个用户,设置指定70个用户达到集合点才释放。那么前面70个到达集合点则会释放该70个,后边到达集合点的用户要等到满足70个才会释放。