Loadrunner 没有从参数列表中获取唯一值
Posted
技术标签:
【中文标题】Loadrunner 没有从参数列表中获取唯一值【英文标题】:Loadrunner not taking unique values from parameter list 【发布时间】:2015-08-15 23:15:39 【问题描述】:我正在运行 loadrunner 来测试我的 API。但是对于并发用户(Vusers = 100),我收到“由于缺少参数而中止测试)的错误。当我检查日志时,我看到文件中的某些成员 ID(在脚本中参数化)未使用所有,甚至其中一些都是重复的。我希望 loadrunner 为每个命中选择唯一值,而不是重复任何值。
场景参数
-
VuGen 脚本包含我对 API 的请求,带有 2 个参数化组件。即会员ID和日期。
成员 ID 文件中提供了 100,000 个 ID。
设置:
一种。选择下一行:唯一
湾。更新值:每次迭代
C。超出值时:中止用户
d。为每个 Vuser 分配 1000 个值
e. Vuser 数(目标场景)= 100
F。负载生成器 = 2
G。测试运行时间 = 15 分钟
Load Runner 版本 = 12.01
【问题讨论】:
实际错误堆栈跟踪:错误:参数“member_id”:表“member_id”中此参数没有更多唯一值[唯一范围为 2001-3000]。 Vuser 根据“超出值时”策略中止。 【参考方案1】:如果您在 15 分钟时进行硬切,那么并不是每个用户都会用尽他们的块,就像上面的虚拟用户消息的情况一样 - 在用尽数据时应该预料到这一点。
将您的组执行策略更改为运行直到完成,而不是运行固定的持续时间。这可能是为什么你有一些完成而一些没有的根源。至于重用,因为这是按行数的块大小,在你的 100K 行中是否有可能重复值?我会使用 Microsoft Logparser 进行快速计数,然后仅在具有不同值的情况下进行计数。如果您发现这两个数字有差异,那么您有一些重复值......这在 100K 值的文件中很容易发生。
考虑添加第三个负载生成器(硬件匹配)作为控制组,运行每种类型的单个虚拟用户。如果这个控制组运行干净,响应时间很快,而另外两个发电机(大概独立于控制器)显示出更慢的响应时间,那么你在控制组中的差异将指向一个过载的发电机。考虑到您的每个用户都将在 RAM 中拥有该数据文件的副本,如果任何 mdrv 进程被交换,您可能会看到交换效果。由于某种原因,没有性能测试工具供应商将他们的代码标记为不可交换....
【讨论】:
我更改了我的组策略以运行完整的持续时间。我仍然得到相同的价值。 100K 值文件是一组从 Oracle 数据库中提取的不同数据,因此我认为这不是重复的。我什至在单个负载生成器上运行它,所有设置都保持不变,可用于 50 个 Vuser,然后移回至 10 个 Vuser。但它似乎重用了文件中的值,即使设置要求它采用唯一值。有什么我想念的吗? 是在单个用户内重复使用还是跨用户重复使用?此外,您能否确认您的所有基础架构都在从控制器到负载生成器等运行所有相同的版本/补丁级别...当您开始跨版本流时,系统的预期行为可能会变得很糟糕 让我说得更清楚一点。我有 2 个负载发电机,一个 100K 的参数文件,以及一个脚本,其中的值被参数化以从文件中接受。在脚本中,参数只出现一次。我正在运行 100 个 Vuser,理想情况下,我希望它应该在两个负载生成中选择唯一值,即如果使用文件中的一个值,则不应在整个负载测试中再次使用它。现在首先回答您的问题,整个版本是 12.01。我不明白您所说的“是在单个用户内重复使用还是跨用户重复使用?”是什么意思。你能详细说明一下吗? 两组或一组具有多个负载生成器?只有在同一个组上下文中才能保证唯一性 多个值在两个负载生成器之间重复。即使我使用一个负载生成器运行,我也会看到重复。如果您是从 Vuser 的角度询问,我不知道我们如何才能确定单个 Vuser 是否始终采用特定值。但是,当我在 VUgen 中使用“模拟”按钮时,它会根据我的设置显示唯一值。我的问题是,当我运行 100 个 VUser 为每个点击选择唯一值时,是否有任何设置可以保证我的唯一性?还有一个问题,你是指块大小吗?以上是关于Loadrunner 没有从参数列表中获取唯一值的主要内容,如果未能解决你的问题,请参考以下文章
Loadrunner查询博客列表并循环删除博客列表中的所有博客