【问题标题】:Calculating throughput from Jmeter jtl log file从 Jmeter jtl 日志文件计算吞吐量
【发布时间】:2015-11-06 19:16:18
【问题描述】:

我试图根据 jtl 日志中基于以下参数的一些属性来计算吞吐量(请求数/时间单位)的公式:

  • 时间戳 (ts)
  • 时间(t)
  • 请求总数

查看时间戳,我不完全确定它是指发送请求的时间还是收到响应的时间(我在这里的主要混淆点)。看看第一个选项的值似乎更有可能。因此,假设这一点,我得出以下结论:

Throughput = (NumRequests / (max(ts + t) - min(ts)) ) * 1000

谁能告诉我这是否正确?

更新(感谢@BlackGaff 的回复)

关键是我需要在非 gui 环境中为一些自动化进程执行测试并收集结果,所以我不能真正使用聚合报告(除非有办法从命令运行它线)。使用 max & min 是尝试从一组请求(在同一测试中)中找到 ts 值。此外,如果我将采样器配置为具有不同于 0 的斜坡上升周期(因此负载是分布的),我得到的 ts 数字是不同的。是的,正如您之前已经提到的,我正在有效地寻找第一个样本的 startTime 和最后一个样本的 endTime 之间的差异。除此之外,我在 jmeter.properties 中找到了一个参数:

# Put the start time stamp in logs instead of the end
#sampleresult.timestamp.start=true

因此,根据这个参数,我似乎还应该更改计算以获取开始和结束时间。

注意:我很好奇如何根据 jtl 文件进行计算,但如果有人需要从命令行获取这些数字,请尝试添加“生成摘要报告”侦听器,然后在 jmeter 日志中您会得到一个执行结束时类似于以下的行:

2011/03/10 22:31:42 INFO  - jmeter.reporters.Summariser: Generate Summary Results =   200 in   9.8s =   20.5/s Avg:    95 Min:    75 Max:   315 Err:     0 (0.00%)

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    在 Jmeter 的聚合报告中打开 JTL 日志可能更容易,它会为您计算吞吐量,然后将其保存回来?

    但是,问题很重要。

    目前,您的公式有时间单位/请求。给定你想要的请求/时间,你的公式应该是:

    Throughput = (NumRequests / (max(ts + t) - min(ts) ) ) * 1000
    

    我不完全确定您为什么要使用 max 和 min,因为您只提供一个值,而这些函数会返回一组中的 max/min。鉴于 TS 是相同的值,使用 EXCEL,您最终会得到:

    Throughput = (NumRequests/t*1000)
    

    我相信你真正想要的是第一个样本的 startTime 和最后一个样本的 endTime 之间的差异)

    根据词汇表:

    吞吐量计算为 请求/时间单位。现在的时间是 从第一个开始计算 采样到最后一个采样结束。 这包括之间的任何间隔 样品,因为它应该 表示服务器上的负载。这 公式是:吞吐量=( 请求)/(总时间)。

    给出最终公式:

    endTime = lastSampleStartTime + lastSampleLoadTime
    startTime = firstSampleStartTime
    converstion = unit time conversion value
    
    Throughput = Numrequests / ((endTime - startTime)*conversion)
    

    【讨论】:

      【解决方案2】:

      关键是我需要执行我的测试并收集结果 一些自动化流程的非 gui 环境,所以我真的不能 使用汇总报告(除非有办法从 命令行)。

      有。您可以使用 JMeter Plugins 项目中的 CMD 工具以 CSV 格式生成汇总报告。

      http://jmeter-plugins.org/wiki/JMeterPluginsCMD/

      【讨论】:

        【解决方案3】:

        假设您要计算 20 个线程的吞吐量。以下是要遵循的步骤:

        1. 清理 jtl 文件,其中仅包含 20 个线程的剩余条目。使用 20 个线程调用保存此文件。
        2. 使用以下命令从时间戳中获取小时分秒

          awk -F"[, .]" '{print $2}' summary.jtl > tps1
          
        3. 运行以下命令以获取吞吐量/秒

          sort tps1 | uniq -c  > tps2
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-13
          • 1970-01-01
          • 2022-01-23
          • 2012-09-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多