我正在创建一个像J meter这样的工具来进行负载测试。我已经创建了20个线程,我在第4次迭代中执行了所有这些线程。
我的代码是这样的,首先来自迭代1的所有线程都将完成,然后第二组线程将开始。
每个线程都在执行登录等操作。我需要计算吞吐量?有人可以指导我什么是正确的方法。目前我遵循以下程序。
我在第一次迭代中捕获了开始时间,即将创建线程 System.currentTimeMillis的();
和结束时间我已经计算了最后一次迭代的最后一个线程?这是对的吗?
答案 0 :(得分:0)
TESTSTART.MS
变量,该变量保存自1970年1月1日以来的毫秒级时间戳,指示测试何时开始,请参阅JMeter用户手册的Pre-defined Properties章节您不需要自己计算吞吐量,JMeter提供Aggregate Report监听器,可自动计算测试结果的吞吐量
如果由于某种原因需要公式,根据JMeter Glossary,它是:
吞吐量计算为请求/时间单位。时间从第一个样品的开始到最后一个样品的结束计算。这包括样本之间的任何间隔,因为它应该代表服务器上的负载。
公式为:吞吐量=(请求数)/(总时间)。
最后,您甚至可以通过Constant Throughput Timer
答案 1 :(得分:0)
我建议计算你在每个线程中进行的操作之前和之后的时间差,而不是在迭代之前和之后进行,以获得更准确的结果。
线程处理有自己的延迟,可能会影响您的最终吞吐量。还分别计算每个线程的吞吐量,并添加它们以获得最终吞吐量。
希望这有帮助。
修改强>
基本上吞吐量=(请求数量)/(总时间)。
假设要生成负载,您需要在2个线程中执行10个请求,因此每个线程有5个请求(如果是均匀分布)。在这种情况下,您可以通过两种方式计算吞吐量。
首先:(您使用过的方法)
一个。在开始线程之前抽出时间。
湾完成所有2个线程后获取时间。 然后
final_tput = 10 /(2个线程占用的总时间)
<强> 第二 强>
一个。在thread1中为每个请求收集时间增量并添加它们以获得总时间(由5个请求获取)。然后通过
计算线程的TPUTthread1_tput = 5 /(5个请求所花费的总时间)
湾对thread2执行相同的计算并计算第二个线程的TPUT。
thread2_tput = 5 /(5个请求所花费的总时间)
之后最终的TPUT将
final_tput = thread1_tput + thread2_tput
第二种方法更准确,因为它不包括线程处理所花费的时间。
答案 2 :(得分:-1)
汇总报告将为您提供解决方案。只需在Thread组中的Listener下添加它即可。在这里,您可以看到清晰的吞吐量值变化。