如何计算用户数量和思考时间以进行负载测试

8
我想知道如何计算负载测试中的用户数,思考时间,缓冲时间和迭代次数。
要求如下: 1.我需要每小时完成10000个事务。 2.需要执行1小时。 3.需要指定思考时间和缓冲时间。
注意: 1.我的脚本“飞机”包含7个事务。 2.没有思考时间的总响应时间为16秒。
如何计算需要提供多少用户才能实现每小时10000个事务,并且我需要指定多少思考时间和缓冲时间以及迭代次数?

无法翻译,因为这是无意义的编程代码。请提供正确的文本以便进行翻译。 - JEnriquePS
2个回答

13
如果你的唯一目标是在特定时间段内模拟一定数量的交易,那么你可以使用相当少量的虚拟用户进行测试。如果你的7个交易的平均交易时间为16秒,则意味着你可以使用单个虚拟用户每秒执行7/16次交易。要在一小时内完成10,000次交易,你需要使用多个并发的虚拟用户。
VU = Number of virtual users
time = test time in seconds
TPS = transactions per second

VU * time * TPS = total_transactions

在这种情况下,我们知道总交易量但不知道VU,因此我们将其重写为:

total_transactions / (time * TPS) = VU

使用我们拥有的数字,我们得到:

10000 / (3600 * 7/16) = 6.3

即使你想在一个小时内进行10,000次交易,也需要超过6个虚拟用户。也许选择10个虚拟用户,并根据需要插入一些睡眠时间以达到确切的10,000次交易。

那么需要多长时间的睡眠时间和多少次迭代呢?

10个用户在一个小时内每16秒执行7次交易,总共执行10 * 7/16 * 3600 = 15,750次交易。我们需要稍微减缓用户的速度,确保他们不会每秒执行全部的7/16次交易。我们可以再次使用公式:

VU * time * TPS = total_transactions

TPS = total_transactions / (VU *time)

TPS = 10000 / (10 * 3600)   =>  TPS = 0.2777...

我们需要确保VUs只执行0.28TPS,而不是7/16(0.44)TPS。

TPS = transactions / time

您的脚本在16秒内执行了7次交易,因此每秒执行的交易数为7/16(0.44) TPS。

为了确定脚本需要执行多长时间,我们将其改为:

time = transactions / TPS

time = 7 / 0.277778   => time = 25.2 seconds

目前,你的程序执行需要16秒,但我们需要它执行时长为25秒,所以你需要增加9秒的休眠时间。

因此:

在一个小时内,10个虚拟用户(VUs)执行7次事务,在25秒内完成,将产生10,000个事务:

10 * 7/25 * 3600 = 10080
每个虚拟用户将执行的脚本迭代次数为:
3600 / 25 = 144 iterations

总而言之:

Number of VUs: 10
Total sleep time during one iteration: 9
Iterations/VU: 144

请注意,这一切都是基于交易时间恒定且不因产生的流量而增加。这个设置将在目标系统上生成接近每秒3笔交易,如果您之前没有以该频率进行过测试,您就不知道它是否会减缓目标系统。


嗨,Ragnar,非常感谢你澄清我的疑惑:):):)我已经清楚地理解了:) - keerthyramachandran
@Ragnar 如果我错了请纠正我。虚拟用户数量将为 (10000/60/60)*16 = ~44。 - NaveenKumar Namachivayam

0
我有一个问题:你提到了TPS:7/16 - 它是基于什么算出来的7/16?应该是16/7。
否则,看这个计算:每小时10000个交易,那么每秒10000/3600 = 2.77;这和7/16是一样的。我认为你的计算是错误的,请纠正我。

我认为你需要更慢地重新阅读这篇文章 :) 你是对的,我们需要做2.77 TPS才能在一个小时内完成10k个交易,这就是我写的内容,但我建议使用10个虚拟用户(VUs),这意味着每个VU必须执行0.277 TPS,总TPS为2.77。7/16的数字来自问题:16秒内7个交易(即0.44 TPS)。 - Ragnar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接