JMeter 中的 mode 参数详解
JMeter 中的 mode 参数详解
在 JMeter 中,mode
参数控制着采样器结果如何被处理和发送。它主要影响分布式测试中控制机和负载机之间的通信方式,以及本地测试中结果的写入方式。选择合适的 mode
可以显著影响测试的性能和资源消耗。
mode
参数有哪些值?
JMeter 主要有以下四种 mode
:
-
StrippedBatch
(默认,推荐)- 工作方式: 批量发送结果,并移除成功样本的响应数据。
- 详细解释:
- 批量发送: JMeter 不会立即发送每个采样器的结果,而是将它们收集在一个批次中(默认 100 个样本或 1 分钟)。当批次达到一定大小或经过一定时间后,才会将整个批次发送出去。
- 移除响应数据: 对于成功的采样器,只发送必要的统计信息,例如:
- 采样器名称
- 开始时间
- 持续时间(响应时间)
- 状态码
- 错误信息(如果发生错误)
- 配置:
jmeter.save.saveservice.batch_size
:设置批次大小。jmeter.save.saveservice.autoflush
:启用自动刷新(按时间间隔发送批次)。jmeter.save.saveservice.autoflush.interval
:设置自动刷新间隔(毫秒)。
- 优点: 显著减少网络开销和控制机负载,提高测试性能和可扩展性,尤其适合高并发场景。
- 缺点: 丢失了成功样本的详细响应数据,不方便进行详细的协议分析和调试。
- 适用场景: 大多数性能测试场景,特别是高负载测试,不需要查看每个请求的完整响应内容时。
-
Batch
- 工作方式: 同样使用批量发送结果,但会保留所有采样器的响应数据,包括成功的和失败的。
- 优点: 保留了所有数据,方便进行详细的协议分析和调试,可以查看每个请求的完整响应内容。
- 缺点: 网络开销和控制机负载比
StrippedBatch
高,在高并发下可能影响性能。 - 适用场景: 需要查看每个请求的完整响应内容,例如调试测试脚本、验证响应数据的正确性、进行详细的协议分析等。
-
Standard
(不推荐)- 工作方式: 立即发送每个采样器的结果,不进行批处理。
- 优点: 可以立即获取所有样本数据(但实际上在高负载下反而可能导致数据丢失)。
- 缺点: 网络开销和控制机负载非常高,在高负载测试中容易成为性能瓶颈,严重影响测试的准确性和可扩展性。
- 适用场景: 极少数特殊情况,例如测试负载非常低,且需要立即获取所有样本数据的情况。强烈不推荐在高负载测试中使用。
- 历史原因: 这是 JMeter 2.9 之前的默认模式,现在已经被
StrippedBatch
取代。
-
Statistical
- 工作方式: 只发送必要的统计数据,而不是每个单独的样本。它会计算各种统计指标(例如,平均值、最小值、最大值、标准差、百分位数等),并将这些统计数据发送或写入。
- 优点: 网络开销和控制机负载最低,非常适合生成统计报告,对控制机压力最小。
- 缺点: 丢失了所有原始样本数据,无法进行详细的分析和调试,无法查看每个请求的详细信息。
- 适用场景: 需要生成统计报告,但不关心每个单独的请求细节时。通常与
-Jmode=Statistical
命令行参数一起使用。
如何设置 mode
?
可以通过以下两种方式设置 mode
:
-
修改
jmeter.properties
文件:在 JMeter 的
bin
目录下找到jmeter.properties
文件,找到mode
属性,修改其值。修改后需要重启 JMeter。例如:copymode=Batch
-
命令行参数:
在运行 JMeter 的命令行中使用
-Jmode=<mode>
参数。命令行参数的优先级高于jmeter.properties
文件中的设置。例如:copyjmeter -n -t test.jmx -l result.jtl -Jmode=StrippedBatch
总结表格
模式 | 发送方式 | 数据内容 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|---|
StrippedBatch |
批量 | 统计信息 | 显著减少网络开销和控制机负载,提高测试性能和可扩展性。 | 丢失成功样本的详细响应数据。 | 大多数性能测试场景,高负载测试,不需要查看每个请求的完整响应内容时。 |
Batch |
批量 | 所有数据 | 保留所有数据,方便进行详细的协议分析和调试。 | 网络开销和控制机负载比 StrippedBatch 高。 |
需要查看每个请求的完整响应内容,例如调试测试脚本、验证响应数据的正确性、进行详细的协议分析等。 |
Standard |
立即发送 | 所有数据 | 可以立即获取所有样本数据(但高负载下可能导致数据丢失)。 | 网络开销和控制机负载非常高,高负载测试中容易成为性能瓶颈。 | 极少数特殊情况,低负载,需要立即获取所有样本数据。强烈不推荐在高负载测试中使用。 |
Statistical |
只发送统计数据 | 统计结果 | 网络开销和控制机负载最低,非常适合生成统计报告。 | 丢失所有原始样本数据,无法进行详细的分析和调试。 | 需要生成统计报告,不关心每个单独的请求细节时。 |
最佳实践
- 默认使用
StrippedBatch
。 - 如果需要查看详细的响应数据,使用
Batch
。 - 避免使用
Standard
。 - 如果只需要统计报告,使用
Statistical
。
记录和使用 JMeter 的 mode
参数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步