Apache JMeter 配置参数详解

Apache JMeter 5.6.3 核心配置参数详解,含配置文件位置、修改方式、参数总览与分类详解(sampler、threads、报告、分布式、JVM),均已实测。

Apache JMeterApache JMeter参数调优性能优化Apache基准测试配置详解2026/10/11

Apache JMeter 配置参数详解

目标:详解 Apache JMeter 5.6.3 的核心配置文件与参数(jmeter.properties、user.properties、system.properties、启动脚本 JVM 参数),说明各参数的修改方式与实测效果。已在 Ubuntu 22.04.5 / JDK17 环境实测通过。

一、环境信息

  • 操作系统:Ubuntu 22.04.5 LTS(x86_64)
  • Apache JMeter:5.6.3(安装于 /opt/apache-jmeter)
  • JDK:OpenJDK 17 (build 17.0.20.1)
  • 配置文件目录:/opt/apache-jmeter/bin/
  • 日志文件:/opt/apache-jmeter/bin/jmeter.log(运行后生成)
  • 结果示例:/opt/apache-jmeter/bin/result.jtl

二、前置条件

  • JMeter 5.6.3 已安装(见《Ubuntu 22.04 安装 Apache JMeter 5.6.3 指南》)。
  • 有 bin/jmeter.properties、bin/user.properties、bin/system.properties 三个配置文件的读写权限。

三、参数查看与修改方式

3.1 配置文件层次

JMeter 启动时按优先级加载(后加载覆盖前):

文件位置加载方式优先级
jmeter.propertiesbin/默认自动加载低
user.propertiesbin/若存在自动加载中
system.propertiesbin/若存在自动加载(注入系统属性)中
命令行 -p 指定文件任意手动指定高
命令行 -J / -D 属性命令行手动指定最高

3.2 查看当前生效参数(非注释行)

grep -vE "^#|^$" /opt/apache-jmeter/bin/jmeter.properties

回显(节选,5.6.3 默认启用项):

not_in_menu=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler,...
gui.quick_0=ThreadGroupGui
gui.quick_1=HttpTestSampleGui
gui.quick_2=RegexExtractorGui
gui.quick_3=AssertionGui
gui.quick_4=ConstantTimerGui
gui.quick_5=TestActionGui
gui.quick_6=JSR223PostProcessor
gui.quick_7=JSR223PreProcessor
gui.quick_8=DebugSampler
gui.quick_9=ViewResultsFullVisualizer
remote_hosts=127.0.0.1
sampleresult.timestamp.start=true
upgrade_properties=/bin/upgrade.properties
HTTPResponse.parsers=htmlParser wmlParser cssParser
cssParser.className=org.apache.jmeter.protocol.http.parser.CssParser
...
summariser.name=summary
cookies=cookies
classfinder.functions.contain=.functions.
user.properties=user.properties
system.properties=system.properties
jmeter.reportgenerator.apdex_satisfied_threshold=500
jmeter.reportgenerator.apdex_tolerated_threshold=1500

3.3 查看注释中的默认值(关键项)

jmeter.properties 中多数参数以注释形式给出默认值,取消注释即启用:

grep -rE "^#? *(language=|log_level.jmeter=|jmeter.log=|server_port=|server.rmi.ssl=|mode=|summariser.interval=|sampleresult.default.encoding=)" /opt/apache-jmeter/bin/jmeter.properties

回显:

#language=en
#server_port=1099
#mode=Standard
#mode=Batch
#mode=Statistical
#mode=Stripped
#mode=StrippedBatch
#mode=org.example.load.MySampleSender
#mode=Asynch
#mode=StrippedAsynch
#mode=DiskStore
#mode=StrippedDiskStore
#summariser.interval=30
#sampleresult.default.encoding=UTF-8

3.4 修改方式

推荐在 user.properties 中覆盖(不污染默认文件):

cat >> /opt/apache-jmeter/bin/user.properties <<'EOF'
# 自定义覆盖示例
sampleresult.default.encoding=UTF-8
summariser.interval=10
EOF

命令行临时生效(压测命令中直接覆盖):

./jmeter -n -t http_test.jmx -Jsummariser.interval=10 -Jlog_level.jmeter=DEBUG

四、参数总览

分类参数默认值说明
语言languageen界面与结果语言(如 zh_CN)
日志log_level.jmeterINFOJMeter 日志级别(DEBUG/INFO/WARN/ERROR)
日志jmeter.log默认打印到控制台 + 文件日志输出目标
结果采样sampleresult.timestamp.starttrue时间戳取请求开始时间
结果采样sampleresult.default.encodingUTF-8结果默认字符集
汇总summariser.namesummary控制台 summary 行名称
汇总summariser.interval30summary 刷新间隔(秒)
分布式remote_hosts127.0.0.1远程 agent 地址列表
分布式server_port1099agent 监听 RMI 端口
分布式modeStandard采样结果传输模式(Standard/Batch/Statistical/...)
报告jmeter.reportgenerator.apdex_satisfied_threshold500Apdex 满意阈值(ms)
报告jmeter.reportgenerator.apdex_tolerated_threshold1500Apdex 可容忍阈值(ms)
HTTPHTTPResponse.parsershtmlParser wmlParser cssParser嵌入式资源解析器
JVMHEAP(脚本内)-Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m堆内存限制(本机已改)

五、核心参数分类详解

5.1 语言与显示

language:界面与结果文件的语言。默认 en(英文)。设为简体中文:

language=zh_CN

⚠️ 注意:language 改中文主要影响 GUI 界面;非 GUI 模式下 summary 输出仍为英文固定格式。

5.2 日志参数

log_level.jmeter:JMeter 自身日志级别,默认 INFO。调试时降为 DEBUG:

log_level.jmeter=DEBUG

jmeter.log:日志输出目标。默认写到当前目录 jmeter.log。可用 -j 指定:

./jmeter -n -t http_test.jmx -j /var/log/jmeter/jmeter.log

5.3 结果采样参数

sampleresult.default.encoding:结果 JTL 中响应内容默认编码,默认 UTF-8。

sampleresult.timestamp.start:时间戳含义。true 表示记录请求发送开始时间;false 表示记录采样结束时间。默认 true。

5.4 汇总(summariser)参数

summariser.name:控制台 summary 行的名称前缀,默认 summary(实测日志中即出现 summary = 10 in 00:00:02 ...)。

summariser.interval:summary 输出周期(秒),默认 30;测试总时长不足 30 秒时仅在结束时输出一次。实测压测 2 秒即输出一次汇总。

5.5 分布式(远程)参数

remote_hosts:分布式压测时远程 agent 的地址列表,默认 127.0.0.1。多 agent 用逗号分隔:

remote_hosts=192.168.1.10:1099,192.168.1.11:1099

server_port:agent(jmeter-server)监听 RMI 端口,默认 1099。

mode:采样结果从 agent 回传 master 的传输模式。默认 Standard(每条结果即时回传)。高并发建议 Batch(批量打包回传)以降低网络开销:

mode=Batch

5.6 报告生成参数

jmeter.reportgenerator.apdex_satisfied_threshold:Apdex 满意阈值(毫秒),默认 500。 jmeter.reportgenerator.apdex_tolerated_threshold:Apdex 可容忍阈值(毫秒),默认 1500。

Apdex =(满意样本 + 可容忍样本 × 0.5)/ 总样本,反映用户体验满意度,出现在 HTML 报告总览页。

5.7 JVM 堆内存参数(bin/jmeter 脚本)

JMeter 的 JVM 参数定义在启动脚本 bin/jmeter 中,通过 HEAP 变量注入。默认值为 -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m(1G 堆),本机实测改为 256MB:

grep -n "Xms256m\|Xms1g" /opt/apache-jmeter/bin/jmeter

回显:

166: : "${HEAP:="-Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m"}"

运行时用 HEAP 环境变量覆盖脚本默认(不落盘改文件):

HEAP="-Xms256m -Xmx512m -XX:MaxMetaspaceSize=256m" ./jmeter -n -t http_test.jmx

生效验证(压测运行时):

jps -v

回显(节选,PID 4668 为 JMeter 进程):

4668 ApacheJMeter.jar ... -Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 ...

💡 说明:脚本内还有 GC_ALGO(默认 -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20)与 JMETER_LANGUAGE(默认 -Duser.language=en -Duser.region=EN)两个可覆盖变量,均可用同名环境变量注入。

5.8 system.properties(JVM 系统属性)

bin/system.properties 中的键会作为 JVM 系统属性注入。5.6.3 默认仅一项:

sun.net.http.allowRestrictedHeaders=true

用途:允许 HTTP 客户端发送受限头(如 Host、Connection),某些带校验的压测场景需要。

六、生产配置模板

适用场景:16GB 内存、多核 CPU 的压测服务器,对公网/内网 HTTP 服务做中大规模压测。

bin/user.properties:

# 结果与编码
sampleresult.default.encoding=UTF-8
sampleresult.timestamp.start=true

# 日志
log_level.jmeter=INFO

# 汇总输出
summariser.name=summary
summariser.interval=10

# 报告 Apdex 阈值(按业务 SLA 调整)
jmeter.reportgenerator.apdex_satisfied_threshold=500
jmeter.reportgenerator.apdex_tolerated_threshold=1500

启动脚本 JVM(bin/jmeter 内 HEAP 行):

HEAP="-Xms256m -Xmx256m -Xmn128m -XX:MaxMetaspaceSize=256m"

⚠️ 注意:压测机内存充裕时可按趋势放宽堆(如 -Xms256m -Xmx512m);高并发(数千线程)压测建议至少 512MB 堆并开启 -XX:+HeapDumpOnOutOfMemoryError 便于排障。

七、常见问题

Q1:修改了 jmeter.properties 为什么不生效

多数参数在启动时读取,改后需重启 JMeter;且注意优先级——user.properties 与 -J 会覆盖同名键。排查时用 -J 临时项验证。

Q2:summary 只在测试结束才输出一次

summariser.interval 默认 30 秒,测试时长不足 30 秒时仅结束时汇总一次;调小该值可看到周期输出。

Q3:分布式压测 agent 连不上

检查 agent 的 jmeter-server 是否启动、server_port(默认 1099)是否放行、master 的 remote_hosts 是否写对地址与端口;RMI 场景注意防火墙 1099 与随机高位端口。

Q4:JVM 堆改后 jps -v 看不到

确认修改的是 bin/jmeter 中 HEAP 行且重启了 JMeter;若用 Compose/systemd 托管,还需确认启动方式是否覆盖了 HEAP 环境变量。

八、参考链接