【碎片化学习】JMeter中常用的设置优化
JMeter.properties 配置优化
JMeter的核心配置文件jmeter.properties位于bin目录下,通过修改该文件可以调整JMeter的全局行为。
关键参数配置
- httpclient4.time_to_live: 设置连接池中连接的最大存活时间(毫秒),默认- -1(无限)。建议根据测试场景调整为合理值(如- 60000)。
- httpclient4.retrycount: 请求失败后的重试次数,默认- 3。可调整为- 1以减少重复请求对测试结果的影响。
- jmeter.save.saveservice.*: 控制结果文件的保存内容。例如- jmeter.save.saveservice.response_data=true可保存响应数据,但会增加磁盘I/O。
- summariser.interval: 控制控制台摘要输出的频率(秒),默认- 30。调整为- 10可更频繁查看测试进度。
示例配置片段
httpclient4.time_to_live=60000
httpclient4.retrycount=1
jmeter.save.saveservice.response_data=false
summariser.interval=10JMeter.bat 启动参数优化
jmeter.bat(Windows)或jmeter.sh(Linux/Mac)是JMeter的启动脚本,可通过调整JVM参数优化性能。
关键参数
- 堆内存设置: 修改HEAP参数,例如set HEAP=-Xms2g -Xmx4g,根据测试规模分配内存(避免OOM)。
- 垃圾回收优化: 添加-XX:+UseG1GC启用G1垃圾回收器,减少GC停顿时间。
- 禁用GUI模式: 非调试时添加-n参数以非GUI模式运行,减少资源消耗。
示例修改片段
set HEAP=-Xms2g -Xmx4g -XX:+UseG1GC
set JMETER_OPTS=%JMETER_OPTS% -Djava.awt.headless=trueHTTP取样器常用优化配置
HTTP取样器是性能测试的核心组件,通过以下配置可提升测试效率。
连接与超时设置
- 实现方式(Implementation): 选择HttpClient4(默认)以获得更好的连接池管理。
- 超时参数: - 连接超时(Connect Timeout): 建议设为5000毫秒。
- 响应超时(Response Timeout): 根据业务需求设置(如10000毫秒)。
 
- 连接超时(Connect Timeout): 建议设为
高级配置
- 启用Keep-Alive: 勾选Use KeepAlive以复用连接,减少TCP握手开销。
- 内容编码: 勾选Use multipart/form-data用于文件上传场景。
- 从HTML获取资源: 在需要模拟浏览器行为时勾选Retrieve All Embedded Resources,但会增加采样器数量。
示例配置截图
- Basic选项卡: 设置协议、域名、路径、方法(GET/POST)。
- Advanced选项卡: 调整超时和连接池参数。
其他优化建议
- 分布式测试: 在remote_hosts属性中配置负载生成器IP,分散压力。
- CSV数据文件: 使用CSV Data Set Config参数化请求,避免硬编码。
- 监听器选择: 避免使用View Results Tree等高开销监听器,改用Aggregate Report或Summary Report。
通过以上配置调整,可显著提升JMeter的测试效率和结果准确性。
更多配置
其他常用的配置项见下表:
| 配置项 | 配置说明 | 影响 | 对应的 JMeter 版本 | 
|---|---|---|---|
| jmeter.save.saveservice.output_format | 定义保存的结果文件格式。 | 决定了结果文件的输出格式,可以是 CSV、XML 等。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.response_data | 是否保存响应数据。 | 如果设置为 true,响应数据将会保存在结果文件中。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.response_time | 是否保存响应时间。 | 影响结果中是否保存请求的响应时间。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.latency | 是否保存延迟时间。 | 控制是否保存从请求开始到响应开始的时间。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.thread_counts | 是否保存线程数目。 | 如果设置为 true,会保存每个请求的线程数目。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.successful | 是否保存请求成功的标志。 | 如果设置为 true,会记录请求是否成功。 | 2.0 及以上版本 | 
| jmeter.threads.max | 最大线程数目。 | 控制测试中同时运行的最大线程数。 | 2.0 及以上版本 | 
| jmeter.engine.remote.start | 启用或禁用远程启动测试。 | 设置为 true,允许通过远程方式启动测试。 | 2.0 及以上版本 | 
| jmeter.gui.color | 设置 JMeter GUI 的颜色主题。 | 可以设置为不同的颜色方案,影响 JMeter 用户界面的外观。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.include | 指定保存结果时要包含哪些字段。 | 用逗号分隔字段名称,只保存指定的字段。 | 2.0 及以上版本 | 
| jmeter.save.saveservice.timestamp_format | 设置时间戳格式。 | 用于设置结果文件中的时间戳格式,影响时间戳的显示格式。 | 3.0 及以上版本 | 
| jmeter.reportgenerator.overall_granularity | 设置报告的粒度。 | 控制报告中数据的粒度,影响结果的详细程度。 | 3.0 及以上版本 | 
| jmeter.ssl.default.protocol | 设置 SSL 协议。 | 设置默认的 SSL 协议,例如 TLSv1.2、TLSv1.3 等。 | 3.1 及以上版本 | 
| jmeter.log_level.jmeter | 设置日志记录级别。 | 可以选择不同的日志级别(例如 DEBUG、INFO、WARN 等)。 | 2.0 及以上版本 | 
