【问题标题】:JMeter writing multiple entries to jtl file for 1 transactionJMeter 将多个条目写入 jtl 文件以进行 1 个事务
【发布时间】:2017-12-18 22:24:47
【问题描述】:

我无法从非 gui 模式 jmeter 输出的 JTL 文件中获取准确结果。

我有一个生成父样本的事务控制器,当我运行事务时,生成的 jtl 文件有一个条目,这是我所期望的。

1513634189384,1552,Test Login Controller,200,"Number of samples in transaction : 1, number of failing samples : 0",Client 1-1,,true,4314,1,1,0

在远程机器上测试脚本时,我希望 JTL 文件中有一个带有主机名的条目: 例如:
1513634189384,1552,Test Login Controller,200,"Number of samples in transaction : 1, number of failing samples : 0",Client1-1,,true,,4314,1,1,MY-HOST

但是,生成的 JTL 文件有 3 个条目,其中 1 个是预期的。 结果输出:

 1513634189384,1552,Test Login Controller,200,"Number of samples in transaction : 1, number of failing samples : 0",Client 1-1,,true,4314,1,1,0  
 1513634189384,1552,Test Login Controller,200,"Number of samples in transaction : 1, number of failing samples : 0",Client 1-1,,true,,4314,1,1  
 1513634189384,1552,Test Login Controller,200,"Number of samples in transaction : 1, number of failing samples : 0",Client 1-1,,true,,4314,1,1,MY-HOST

为什么其他 2 个条目是从哪里写出来的?

我正在使用 Jmeter 3.0。 我的属性是:

# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
#jmeter.save.saveservice.output_format=csv


# true when field should be saved; false otherwise

# assertion_results_failure_message only affects CSV output
jmeter.save.saveservice.assertion_results_failure_message=true

# legitimate values: none, first, all  
#jmeter.save.saveservice.assertion_results=none

#jmeter.save.saveservice.data_type=true   
#jmeter.save.saveservice.label=true  
#jmeter.save.saveservice.response_code=true  
# response_data is not currently supported for CSV output  
#jmeter.save.saveservice.response_data=false  
# Save ResponseData for failed samples  
jmeter.save.saveservice.response_data.on_error=true  
#jmeter.save.saveservice.response_message=true  
#jmeter.save.saveservice.successful=true  
#jmeter.save.saveservice.thread_name=true  
#jmeter.save.saveservice.time=true  
#jmeter.save.saveservice.subresults=true  
#jmeter.save.saveservice.assertions=true  
jmeter.save.saveservice.latency=false  
#jmeter.save.saveservice.connect_time=false  
#jmeter.save.saveservice.samplerData=false  
#jmeter.save.saveservice.responseHeaders=false  
#jmeter.save.saveservice.requestHeaders=false  
#jmeter.save.saveservice.encoding=false  
#jmeter.save.saveservice.bytes=true  
#jmeter.save.saveservice.url=false  
#jmeter.save.saveservice.filename=false  
jmeter.save.saveservice.hostname=true  
jmeter.save.saveservice.thread_counts=true  
#jmeter.save.saveservice.sample_count=false  
jmeter.save.saveservice.idle_time=false  

【问题讨论】:

  • 你可以追加文件执行多次,尝试删除jtl文件,执行1次后查看结果

标签: apache jmeter


【解决方案1】:
  1. 您可能会将结果写入同一个 .jtl 文件。您可以在 JMeter 启动脚本中添加 -f 参数,以确保 JMeter 在执行测试之前删除现有的 .jtl 结果文件。

    jmeter -n -f -t test.jmx -l result.jtl
    

    更多信息:Full list of command-line options

  2. 您可能有 > 1 台远程机器,因此 JMeter 实际上在 3 个从机上执行测试,因此您在结果文件中有 3 个条目。您可以尝试将__machineName()__machineIP() 函数添加到您的事务控制器的名称中,例如Test Login Controller - ${__machineName()}

    这样您将在 .jtl 结果文件中查看来自哪台机器的请求。请参阅Apache JMeter Functions - An Introduction 文章以了解有关 JMeter 函数概念的更多信息。

  3. 您只需在Thread Group 中定义 > 1 个线程或循环

【讨论】:

  • 所以我已经确定了所有 3 个选项,但我仍然看到同样的问题。查看远程服务器中的日志,我看到这被触发了 3 次。 2017/12/20 05:33:30 DEBUG - jmeter.samplers.BatchSampleSender: Firing sample 2017/12/20 05:33:30 DEBUG - jmeter.samplers.BatchSampleSender: Firing sample 2017/12/20 05:33:30 DEBUG - jmeter.samplers.BatchSampleSender: Firing sample 还要澄清一下,我正在运行线程组一次。我的循环计数设置为 1
  • 这个问题现在似乎只在 NON gui 模式下运行测试时才会发生。
【解决方案2】:

我的测试网站是 https 我在jmeter中空了。所以默认情况下它被认为是http。 对于此设置,我在日志文件中接收多个条目。 在我为我的测试用例更改为 jmeter 中的 https 之后。 解决了日志文件中的多个条目问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    相关资源
    最近更新 更多