【发布时间】:2016-11-13 07:45:26
【问题描述】:
我必须对 50 个用户运行 100 次迭代。考试总时长为 1 小时。 1个用户可以做2次迭代,脚本中的事务数为6。
如何计算起搏时间?
【问题讨论】:
标签: performance-testing loadrunner
我必须对 50 个用户运行 100 次迭代。考试总时长为 1 小时。 1个用户可以做2次迭代,脚本中的事务数为6。
如何计算起搏时间?
【问题讨论】:
标签: performance-testing loadrunner
根据利特尔定律:
No. of Concurrent Users(N) =
Throughput or TPS(X) * [
Response Time (RT) + Think Time (TT) + Pacing (P)
]
这里RT+TT 是脚本执行时间SET,您可以通过运行脚本一次并将所有事务的RT 和所有思考时间相加来计算。
假设 SET 为 60 秒。
根据你的问题
total transactions in 1 hr =
100(Iterations) *
50(Users) *
2(Each User Iteration) *
6(No. of Transactions)
= 60000 Transactions/hr
将其转换为TPS = 60000/3600 = 16.66
现在将所有值都纳入利特尔定律:
50 = 16.66 (60 - Pacing)
Pacing = 60 - 50/16.66
Pacing = 57 secs (approx).
【讨论】:
Pacing 是迭代之间的等待时间,所以我同意@CyberNinja,在您的用例中,pacing 是 1800 秒,因为它是实现目标的脚本的最大持续时间:一小时内产生 100 次迭代,50 个用户。 步调不是 Response_time + Think_Time!
【讨论】:
Pacing 是“迭代间”间隙,用于控制测试期间的迭代速率。如果 1 位用户的目标是每小时完成 2 次迭代,则导致 1800 秒的起搏(上面提到的小定律)。现在只要这 6 笔交易的响应时间和它们之间的思考时间之和小于 1800 秒,您就可以达到所需的速率。 注意:迭代不等于事务,除非迭代只有一个事务。参考this获得图片理解
【讨论】:
始终应用利特尔定律来计算 Pacing、ThinkTime、No.of VUsers
根据利特尔定律:VUser 数= 吞吐量*(Responce_Time + Think_Time)
解释
吞吐量 = 总交易数/以秒为单位的时间 , Pacing= (Response_Time + Think_Time)
根据您的要求- 迭代总数 100 和 1 次迭代有 6 个事务,所以事务总数 = 600
1 分钟的吞吐量为:600/60 = 10 , 1 秒的吞吐量为:0.16
根据公式 50 = 0.16*(Pacing) 节奏 = 312.5 秒
要在 1 小时内完成 100 次迭代,您必须设置 pacing 312.5 秒,确保 Pacing = Response_time + Think_Time。
【讨论】:
例子:
1000 个用户,每小时 10000 次完整迭代
10,000/1,000 = 每个用户每小时 10 次迭代
每小时 3600 秒 / 每位用户每小时 10 次迭代 = 平均每 360 秒(六分钟)一次迭代
LoadRunner 中的随机算法基于 C rand() 函数,该函数对于大型数据集大致(但不完全)一致。因此,我采用从一次迭代开始到下一次迭代的平均节奏间隔,然后将其调整为正/负 20%。
因此,您的 360 ( 0:06:00 ) 秒节奏变为 288 秒 (0:04:48) 到 432 秒 (0:07:12) 的范围。
您将为要暂存的每个业务流程运行这些计算
请查看您的生产日志以获取有关从第 X 页到第 X+1 页的用户范围的信息。这很容易实现,因为每个顶级页面都引用了 REFERER,或者它来自的上一页。按客户端 IP 分组的时间戳比较可以提供您需要的思考时间范围。
【讨论】: