【问题标题】:Jmeter non GUI mode csv report not showing latencyJmeter 非 GUI 模式 csv 报告未显示延迟
【发布时间】:2025-12-30 23:40:10
【问题描述】:

我正在尝试获取 jmeter html 报告以进行 SFTP 协议中的文件传输。 我正在使用SSH SFTP Protocol 插件并将Simple Data Writer 添加到该线程组。

我已经使用 Apache MINA 创建了自己的 sftp 服务器。 Jmeter 脚本将访问我创建的服务器并上传文件。

脚本参数:

  • 线程组 - 250
  • 加速期 - 50
  • 循环计数 - 1

在非 GUI 模式下以nohup sh jmeter.sh -n -t Singlepart_MultipleThread_RampUp.jmx -l Singlepart_MultipleThread_RampUp.jtl 运行脚本后。我确实生成了一个 csv,我将其转换为 html 报告命令 jmeter -g <csv> -o <destination_folder>

创建的 html 报告将 Latency vs TimeLatency vs Request 显示为零,甚至 csv 报告也将延迟列显示为零。

下面是我的 user.properties 文件

user.properties

# Latencies Over Time graph definition
jmeter.reportgenerator.graph.latenciesOverTime.classname=org.apache.jmeter.report.processor.graph.impl.LatencyOverTimeGraphConsumer
jmeter.reportgenerator.graph.latenciesOverTime.title=Latencies Over Time
jmeter.reportgenerator.graph.latenciesOverTime.property.set_granularity=${jmeter.reportgenerator.overall_granularity}

# Latencies Vs Request graph definition
jmeter.reportgenerator.graph.latencyVsRequest.classname=org.apache.jmeter.report.processor.graph.impl.LatencyVSRequestGraphConsumer
jmeter.reportgenerator.graph.latencyVsRequest.title=Latencies Vs Request
jmeter.reportgenerator.graph.latencyVsRequest.exclude_controllers=true
jmeter.reportgenerator.graph.latencyVsRequest.property.set_granularity=${jmeter.reportgenerator.overall_granularity}

jmeter.properties

#---------------------------------------------------------------------------
# Results file configuration
#---------------------------------------------------------------------------

# This section helps determine how result data will be saved.
# The commented out values are the defaults.

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

# The below properties are 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=all
#
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=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
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=true
# Only available with HttpClient4
#jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
#jmeter.save.saveservice.responseHeaders=false
#jmeter.save.saveservice.requestHeaders=false
#jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=false
jmeter.save.saveservice.hostname=false
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=false
jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
#jmeter.save.saveservice.timestamp_format=ms
#jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

# For use with Comma-separated value (CSV) files or other formats
# where the fields' values are separated by specified delimiters.
# Default:
#jmeter.save.saveservice.default_delimiter=,
# For TAB, one can use:
#jmeter.save.saveservice.default_delimiter=\t

# Only applies to CSV format files:
# Print field names as first line in CSV
#jmeter.save.saveservice.print_field_names=true

# Optional list of JMeter variable names whose values are to be saved in the result data files.
# Use commas to separate the names. For example:
#sample_variables=SESSION_ID,REFERENCE
# N.B. The current implementation saves the values in XML as attributes,
# so the names must be valid XML names.
# By default JMeter sends the variable to all servers
# to ensure that the correct data is available at the client.

# Optional xml processing instruction for line 2 of the file:
# Example:
#jmeter.save.saveservice.xml_pi=<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report.xsl"?>
# Default value:
#jmeter.save.saveservice.xml_pi=

# Prefix used to identify filenames that are relative to the current base
#jmeter.save.saveservice.base_prefix=~/

# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
#jmeter.save.saveservice.autoflush=false

所以基本上在两个地方面临问题:

  1. 如何获取延迟值?
  2. 当我提供 Ramp up 值为 1 时,带有 Thread Group =50 的脚本大约需要 16 秒才能完成上传,而如果我给 Ramp up 提供 1 以外的值,例如 10,那么脚本会在 10 秒后结束,无论文件是否上传以及在 html 报告中提供模糊的结果。

知道如何解决这个问题。或者需要在脚本中做任何其他事情。

【问题讨论】:

    标签: ssh jmeter sftp jmeter-plugins


    【解决方案1】:
    1. 你不能作为你在任何地方使用的插件doesn't callSampleResult.setLatency()函数

      理论上应该可以request the functionality from the plugin developers

    2. 为 50 个虚拟用户设置 10 秒的加速周期意味着 JMeter 从 1 个虚拟用户开始,并在 10 秒的持续时间内逐渐将负载增加到 50。确保在线程组中定义了足够的循环,因为当第一个用户已经完成上传文件并被终止并且第二个用户不需要启动时,您可能会遇到这种情况,因此您最多有 1 个用户并发(可以使用Active Threads Over Time 听众)。如果需要,请参阅JMeter Test Results: Why the Actual Users Number is Lower than Expected 以获得更详细的说明。

    【讨论】: