计算吞吐量

时间:2015-12-23 12:11:20

标签: jmeter

我正在创建一个像J meter这样的工具来进行负载测试。我已经创建了20个线程,我在第4次迭代中执行了所有这些线程。

我的代码是这样的,首先来自迭代1的所有线程都将完成,然后第二组线程将开始。

每个线程都在执行登录等操作。我需要计算吞吐量?有人可以指导我什么是正确的方法。目前我遵循以下程序。

我在第一次迭代中捕获了开始时间,即将创建线程 System.currentTimeMillis的();

和结束时间我已经计算了最后一次迭代的最后一个线程?这是对的吗?

3 个答案:

答案 0 :(得分:0)

  1. 您不需要获得第一次迭代时间,JMeter提供TESTSTART.MS变量,该变量保存自1970年1月1日以来的毫秒级时间戳,指示测试何时开始,请参阅JMeter用户手册的Pre-defined Properties章节
  2. 您不需要自己计算吞吐量,JMeter提供Aggregate Report监听器,可自动计算测试结果的吞吐量

    Aggregate Report Throughput

    如果由于某种原因需要公式,根据JMeter Glossary,它是:

      

    吞吐量计算为请求/时间单位。时间从第一个样品的开始到最后一个样品的结束计算。这包括样本之间的任何间隔,因为它应该代表服务器上的负载。

         

    公式为:吞吐量=(请求数)/(总时间)。

  3. 最后,您甚至可以通过Constant Throughput Timer

  4. 设置目标吞吐量

答案 1 :(得分:0)

我建议计算你在每个线程中进行的操作之前和之后的时间差,而不是在迭代之前和之后进行,以获得更准确的结果。

线程处理有自己的延迟,可能会影响您的最终吞吐量。还分别计算每个线程的吞吐量,并添加它们以获得最终吞吐量。

希望这有帮助。

修改

基本上吞吐量=(请求数量)/(总时间)。

假设要生成负载,您需要在2个线程中执行10个请求,因此每个线程有5个请求(如果是均匀分布)。在这种情况下,您可以通过两种方式计算吞吐量。

首先:(您使用过的方法)

一个。在开始线程之前抽出时间。

湾完成所有2个线程后获取时间。 然后

  

final_tput = 10 /(2个线程占用的总时间)

<强> 第二

一个。在thread1中为每个请求收集时间增量并添加它们以获得总时间(由5个请求获取)。然后通过

计算线程的TPUT
  

thread1_tput = 5 /(5个请求所花费的总时间)

湾对thread2执行相同的计算并计算第二个线程的TPUT。

  

thread2_tput = 5 /(5个请求所花费的总时间)

之后最终的TPUT将

  

final_tput = thread1_tput + thread2_tput

第二种方法更准确,因为它不包括线程处理所花费的时间。

答案 2 :(得分:-1)

汇总报告将为您提供解决方案。只需在Thread组中的Listener下添加它即可。在这里,您可以看到清晰的吞吐量值变化。