1. 入门¶
1.0 概述¶
使用 JMeter 时,您通常会遵循以下流程:1.0.1 测试计划构建¶
为此,您将在 GUI 模式下运行 JMeter。
然后,您可以选择从浏览器或本机应用程序记录应用程序。您可以使用菜单
请注意,您也可以手动构建您的计划。确保您阅读本文档以了解主要概念。
您还将使用以下选项之一对其进行调试:- 线程组上 在
和查看结果树渲染器或测试器(CSS/JQUERY、JSON、Regexp、XPath)。
确保在构建测试计划时
遵循最佳实践。
1.0.2 负载测试运行¶
一旦您的测试计划准备就绪,您就可以开始您的负载测试。第一步是配置将运行 JMeter 的注入器,这与任何其他负载测试工具一样包括:
- 根据 CPU、内存和网络正确调整机器大小
- 操作系统调优
- Java 设置:确保安装 JMeter 支持的最新版本的 Java
- 增加 Java 堆大小。默认情况下,JMeter 以 1 GB 的堆运行,这对于您的测试可能不够,并且取决于您的测试计划和要运行的线程数
使用 CLI 模式,您可以生成包含结果的 CSV(或 XML)文件,并让 JMeter在负载测试结束时生成 HTML 报告。JMeter 默认会在运行时提供负载测试的摘要。
您还可以在测试期间使用Backend Listener获得实时结果。
1.0.3 负载测试分析¶
负载测试完成后,您可以使用 HTML 报告来分析负载测试。1.0.4 让我们开始¶
开始使用 JMeter 的最简单方法是首先 下载最新的生产版本并安装它。该版本包含构建和运行大多数类型的测试所需的所有文件,例如 Web (HTTP/HTTPS)、FTP、JDBC、LDAP、Java、JUnit 等。
如果您想执行 JDBC 测试,那么您当然需要供应商提供的适当 JDBC 驱动程序。JMeter 不附带任何 JDBC 驱动程序。
JMeter 包含 JMS API jar,但不包含 JMS 客户端实现。如果要运行 JMS 测试,则需要从 JMS 提供程序下载适当的 jar。
接下来,启动 JMeter 并通过用户指南的构建测试计划部分来熟悉 JMeter 基础知识(例如,添加和删除元素)。
最后,阅读有关如何构建特定类型的测试计划的相应部分。例如,如果您对测试 Web 应用程序感兴趣,请参阅 构建 Web 测试计划部分。其他特定的测试计划部分是:
一旦您对构建和运行 JMeter 测试计划感到满意,您就可以查看各种配置元素(计时器、侦听器、断言等),这些元素可以让您更好地控制测试计划。
1.1 要求¶
JMeter 要求您的计算环境满足一些最低要求。
1.1.1 Java 版本¶
由于 JMeter 仅使用标准 Java API,因此如果您的 JRE 由于 JRE 实现问题而无法运行 JMeter,请不要提交错误报告。
1.2 可选¶
如果您打算进行 JMeter 开发,那么您将需要下面列出的一个或多个可选包。
1.2.1 Java 编译器¶
如果您想构建 JMeter 源代码或开发 JMeter 插件,那么您将需要一个完全兼容的 JDK 8 或更高版本。
1.2.2 SAX XML 解析器¶
JMeter 带有 Apache 的Xerces XML 解析器。您可以选择告诉 JMeter 使用不同的 XML 解析器。为此,请在 JMeter 的classpath中包含第三方解析器的类,并使用解析器实现的完整类名更新jmeter.properties文件。
1.2.3 电子邮件支持¶
JMeter 具有广泛的电子邮件功能。它可以根据测试结果发送电子邮件,并具有 POP3(S)/IMAP(S) 采样器。它还有一个 SMTP(S) 采样器。
1.2.4 SSL 加密¶
要使用 SSL 加密 (HTTPS) 测试 Web 服务器,JMeter 需要提供 SSL 的实现,就像 Sun Java 1.4 及更高版本一样。如果您的 Java 版本不包含 SSL 支持,则可以添加外部实现。在 JMeter 的classpath中包含必要的加密包。此外,更新system.properties以注册 SSL 提供程序。
JMeter HTTP 默认为协议级 TLS。这可以通过编辑 jmeter.properties或user.properties中的 JMeter 属性https.default.protocol来更改。
JMeter HTTP 采样器被配置为接受所有证书,无论是否受信任,无论有效期等。 这是为了在测试服务器时提供最大的灵活性。
如果服务器需要客户端证书,则可以提供。
还有SSL 管理器,用于更好地控制证书。
SMTP 采样器可以选择使用本地信任存储或信任所有证书。
1.2.6 JMS客户端¶
JMeter 现在包括来自 Apache Geronimo 的 JMS API,因此您只需从 JMS 提供者添加适当的 JMS 客户端实现 jar。有关详细信息,请参阅他们的文档。JMeter Wiki上也可能有一些信息。
1.2.7 ActiveMQ JMS 库¶
您需要将 jar activemq-all-XXXjar 添加到您的类路径中,例如将其存储在lib/目录中。
有关详细信息,请参阅ActiveMQ 初始配置页面 。
1.3 安装¶
我们建议大多数用户运行最新版本。
要安装发布版本,只需将 zip/tar 文件解压缩到要安装 JMeter 的目录中。只要您正确安装了 JRE/JDK 并设置了JAVA_HOME环境变量,您就无需再做任何事情了。
安装目录结构应如下所示(其中XY是版本号):
apache-jmeter-X.Y apache-jmeter-X.Y/bin apache-jmeter-X.Y/docs apache-jmeter-X.Y/extras apache-jmeter-X.Y/lib/ apache-jmeter-X.Y/lib/ext apache-jmeter-X.Y/lib/junit apache-jmeter-X.Y/licenses apache-jmeter-X.Y/printable_docs如果需要,您可以重命名父目录(即apache-jmeter-XY),但不要更改任何子目录名称。
1.4 运行 JMeter ¶
要运行 JMeter,请运行jmeter.bat(对于 Windows)或jmeter(对于 Unix)文件。这些文件位于bin目录中。片刻之后,应该会出现 JMeter GUI。
bin目录中 还有一些您可能会发现有用的附加脚本。Windows 脚本文件(.CMD 文件需要 Win2K 或更高版本):
- jmeter.bat
- 运行 JMeter(默认在 GUI 模式下)
- jmeterw.cmd
- 在没有 Windows shell 控制台的情况下运行 JMeter(默认在 GUI 模式下)
- jmeter-n.cmd
- 在此放置一个 JMX 文件以运行 CLI 模式测试
- jmeter-nr.cmd
- 在此放置一个 JMX 文件以远程运行 CLI 模式测试
- jmeter-t.cmd
- 在此放置一个 JMX 文件以在 GUI 模式下加载它
- jmeter-server.bat
- 以服务器模式启动 JMeter
- 镜像服务器.cmd
- 在 CLI 模式下运行 JMeter 镜像服务器
- 关机.cmd
- 运行 Shutdown 客户端以优雅地停止 CLI 模式实例
- 停止测试.cmd
- 运行 Shutdown 客户端突然停止 CLI 模式实例
有一些环境变量可用于自定义 JMeter 的 JVM 设置。一种简单的设置方法是在bin目录中创建一个名为setenv.bat的文件。这样的文件可能如下所示:
rem This is the content of bin\setenv.bat, rem it will be called by bin\jmeter.bat set JVM_ARGS=-Xms1024m -Xmx1024m -Dpropname=value
JVM_ARGS可用于覆盖 jmeter.bat 脚本中的 JVM 设置,并将在启动 JMeter 时设置,例如:
jmeter -t test.jmx …
可以定义以下环境变量:
- 绘图
- 影响直接绘制使用的 JVM 选项,例如-Dsun.java2d.ddscale=true。默认为空。
- GC_ALGO
- JVM 垃圾收集器选项。默认为-XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
- 堆
- 启动 JMeter 时使用的 JVM 内存设置。默认为-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
- JMETER_BIN
- JMeter bin 目录(必须以\结尾)。当调用setenv.bat时,值将被猜到。
- JMETER_COMPLETE_ARGS
- 如果设置指示,则仅使用JVM_ARGS和JMETER_OPTS。所有其他选项,如HEAP和GC_ALGO将被忽略。默认为空。
- JMETER_HOME
- 安装目录。将从jmeter.bat的位置猜测
- JMETER_LANGUAGE
- Java 运行时选项来指定使用的语言。默认为:-Duser.language="en" -Duser.region="EN"
- JM_LAUNCH
- java 可执行文件的名称,如java.exe(默认)或javaw.exe
- JVM_ARGS
- 启动 JMeter 时要使用的 Java 选项。这些将最后添加到 java 命令中。默认为空
Un*x 脚本文件;应该适用于大多数 Linux/Unix 系统:
- 仪表
- 运行 JMeter(默认在 GUI 模式下)。定义一些可能不适用于所有 JVM 的 JVM 设置。
- jmeter服务器
- 在服务器模式下启动 JMeter(使用适当的参数调用 jmeter 脚本)
- jmeter.sh
- 非常基本的 JMeter 脚本(您可能需要调整 JVM 选项,例如内存设置)。
- 镜像服务器.sh
- 在 CLI 模式下运行 JMeter 镜像服务器
- 关机.sh
- 运行 Shutdown 客户端以优雅地停止 CLI 模式实例
- 停止测试.sh
- 运行 Shutdown 客户端突然停止 CLI 模式实例
可能需要设置一些环境变量来配置 JMeter 使用的 JVM。这些变量可以直接在启动jmeter脚本的 shell 中设置。例如,设置变量JVM_ARGS将覆盖大多数预定义的设置,例如
JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]
将覆盖脚本中的 HEAP 设置。
要永久设置这些变量,您可以将它们放在bin目录中名为setenv.sh的文件中。该文件将在运行 JMeter 时通过调用jmeter脚本获取。bin/setenv.sh的示例可能如下所示:
# This is the file bin/setenv.sh, # it will be sourced in by bin/jmeter # Use a bigger heap, but a smaller metaspace, than the default export HEAP="-Xms1G -Xmx1G -XMaxMetaspaceSize=192m" # Try to guess the locale from the OS. The space as value is on purpose! export JMETER_LANGUAGE=" "
可以定义以下环境变量:
- GC_ALGO
- 用于指定 JVM 垃圾收集算法的 Java 运行时选项。默认为-XX:+UseG1GC -XX:MaxGCPauseMillis=250 -XX:G1ReservePercent=20
- 堆
- 启动 JMeter 时使用的用于内存管理的 Java 运行时选项。默认为-Xms1g -Xmx1g -X:MaxMetaspaceSize=256m
- JAVA_HOME
- 必须指向您的 Java Development Kit 安装。需要使用“调试”参数运行。在某些操作系统上,JMeter 会尽力猜测 JVM 的位置。
- JMETER_COMPLETE_ARGS
- 如果设置指示,则仅使用JVM_ARGS和JMETER_OPTS。所有其他选项,如HEAP和GC_ALGO将被忽略。默认为空。
- JMETER_HOME
- 可能指向您的 JMeter 安装目录。如果为空,它将相对于jmeter脚本进行设置。
- JMETER_LANGUAGE
- Java 运行时选项来指定使用的语言。默认为-Duser.language=en -Duser.region=EN
- JMETER_OPTS
- JMeter 启动时使用的 Java 运行时选项。JMeter 可能会添加操作系统的特殊选项。
- JRE_HOME
- 必须指向您的 Java 运行时安装。如果为空,则默认为JAVA_HOME 。如果JRE_HOME和JAVA_HOME都为空,JMeter 将尝试猜测JAVA_HOME。如果同时设置了JRE_HOME和JAVA_HOME ,则使用JAVA_HOME。
- JVM_ARGS
- 启动 JMeter 时要使用的 Java 选项。这些将在JMETER_OPTS之前和其他 JVM 选项之后添加。默认为空
1.4.1 JMeter 的类路径¶
JMeter 会自动从以下目录中的 jar 中查找类:
- JMETER_HOME/lib
- 用于实用罐子
- JMETER_HOME/lib/ext
- 用于 JMeter 组件和插件
如果您开发了新的 JMeter 组件,那么您应该将它们 jar 并将 jar 复制到 JMeter 的lib/ext目录中。JMeter 将自动在此处找到的任何 jar 中查找 JMeter 组件。不要将lib/ext用于插件使用的实用程序 jar 或依赖项 jar;它仅适用于 JMeter 组件和插件。
如果您不想将 JMeter 插件 jar 放在lib/ext目录中,请在jmeter.properties中定义属性search_paths。
实用程序和依赖项 jar(库等)可以放在lib目录中。
如果您不想将此类 jar 放在lib目录中,则 在jmeter.properties中定义属性user.classpath或plugin_dependency_paths。有关差异的说明,请参见下文。
其他 jars(例如 JDBC、JMS 实现和 JMeter 代码所需的任何其他支持库)应该放在lib目录中 - 而不是lib/ext目录,或者添加到user.classpath。
您还可以在$JAVA_HOME/jre/lib/ext中安装实用程序 Jar 文件,或者您可以在jmeter.properties中设置属性user.classpath
请注意,设置CLASSPATH环境变量将不起作用。这是因为 JMeter 以“ java -jar ”启动,而 java 命令静默忽略CLASSPATH变量,以及使用-jar时的-classpath / -cp 选项。
1.4.2 从模板创建测试计划¶
您可以从现有模板创建新的测试计划。
为此,您可以使用菜单
或 Templates 图标:将出现一个弹出窗口,然后您可以在列表中选择一个模板:
一些模板可能需要用户输入参数。对于这些,单击创建按钮后,将出现一个新窗口,如下所示:
完成参数后,单击“验证”按钮,将创建模板。
每个模板的文档说明了从模板创建测试计划后要做什么。
1.4.3 在代理后使用 JMeter ¶
如果您在防火墙/代理服务器后面进行测试,您可能需要向 JMeter 提供防火墙/代理服务器主机名和端口号。为此,请使用以下参数从命令行运行jmeter[.bat]文件:
- -E
- [使用的代理方案 - 可选 - 用于非 http]
- -H
- [代理服务器主机名或 IP 地址]
- -P
- [代理服务器端口]
- -N
- [非代理主机](例如*.apache.org|localhost)
- -u
- [代理身份验证的用户名 - 如果需要]
- -一种
- [代理身份验证的密码 - 如果需要]
jmeter -E https -H my.proxy.server -P 8000 -u username -a password -N localhost
您还可以使用--proxyScheme、--proxyHost、--proxyPort、--username和--password作为参数名称
如果提供了代理方案,则 JMeter 设置以下系统属性:
- http.proxyScheme
如果提供了代理主机和端口,则 JMeter 设置以下系统属性:
- http.proxyHost
- http.proxyPort
- https.proxyHost
- https.proxyPort
用于代理的用户和密码可以由系统属性http.proxyUser 和http.proxyUser 给出。它们将被 HTTP 采样器中设置的上述参数或值覆盖。
如果提供了非代理主机列表,则 JMeter 设置以下系统属性:
- http.nonProxyHosts
- https.nonProxyHosts
因此,如果您不想同时设置 http 和 https 代理,您可以在system.properties中定义相关属性,而不是使用命令行参数。
代理设置也可以在测试计划中定义,使用HTTP 请求默认 配置或HTTP 请求采样器元素。
1.4.4 CLI 模式(命令行模式称为 NON GUI 模式)¶
对于负载测试,您必须在此模式下(无 GUI)运行 JMeter 以从中获得最佳结果。为此,请使用以下命令选项:
- -n
- 这指定 JMeter 以 cli 模式运行
- -t
- [包含测试计划的 JMX 文件的名称]。
- -l
- [将样本结果记录到的 JTL 文件的名称]。
- -j
- [JMeter 运行日志文件的名称]。
- -r
- 在 JMeter 属性“ remote_hosts ”指定的服务器中运行测试
- -R
- [远程服务器列表] 在指定的远程服务器上运行测试
- -G
- [CSV 文件的路径] 仅生成报告仪表板
- -e
- 负载测试后生成报告仪表板
- -o
- 负载测试后生成报告仪表板的输出文件夹。文件夹不能存在或为空
该脚本还允许您指定可选的防火墙/代理服务器信息:
- -H
- [代理服务器主机名或 IP 地址]
- -P
- [代理服务器端口]
jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
如果属性jmeterengine.stopfail.system.exit设置为true(默认为false ),则如果 JMeter 无法停止所有线程,它将调用System.exit(1) 。通常这是没有必要的。
1.4.5 服务器模式¶
对于分布式测试,在远程节点上以服务器模式运行 JMeter,然后从 GUI 控制服务器。您还可以使用 CLI 模式运行远程测试。要启动服务器,请在每个服务器主机上运行jmeter-server[.bat] 。
该脚本还允许您指定可选的防火墙/代理服务器信息:
- -H
- [代理服务器主机名或 IP 地址]
- -P
- [代理服务器端口]
jmeter-server -H my.proxy.server -P 8000
如果您希望服务器在运行单个测试后退出,请定义 JMeter 属性server.exitaftertest=true。
要在 CLI 模式下从客户端运行测试,请使用以下命令:
jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]在哪里:
- -G
- 用于定义要在服务器中设置的 JMeter 属性
- -X
- 表示在测试结束时退出服务器
- -R服务器1,服务器2
- 可以用来代替-r来提供要启动的服务器列表。覆盖remote_hosts,但不定义属性。
如果属性jmeterengine.remote.system.exit设置为true(默认为false),那么 JMeter 将在测试结束时停止 RMI 后调用System.exit(0) 。通常这是没有必要的。
1.4.6 通过命令行覆盖属性¶
Java 系统属性和 JMeter 属性可以直接在命令行上覆盖(而不是修改jmeter.properties)。为此,请使用以下选项:
- -D[prop_name]=[值]
- 定义一个 java 系统属性值。
- -J[prop_name]=[值]
- 定义一个本地 JMeter 属性。
- -G[prop_name]=[值]
- 定义要发送到所有远程服务器的 JMeter 属性。
- -G[属性文件]
- 定义一个包含要发送到所有远程服务器的 JMeter 属性的文件。
- -L[类别]=[优先级]
- 覆盖日志记录设置,将特定类别设置为给定的优先级。
-L标志也可以在没有类别名称的情况下使用来设置根日志记录级别。
例子:
jmeter -Duser.dir=/home/mstover/jmeter_stuff \ -Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
jmeter -LDEBUG
1.4.7 日志和错误消息¶
这是一个示例log4j2.xml文件,它为每个类别定义了两个日志附加程序和记录器。
<Configuration status="WARN" packages="org.apache.jmeter.gui.logging"> <Appenders> <!-- The main log file appender to jmeter.log in the directory from which JMeter was launched, by default. --> <File name="jmeter-log" fileName="${sys:jmeter.logfile:-jmeter.log}" append="false"> <PatternLayout> <pattern>%d %p %c{1.}: %m%n</pattern> </PatternLayout> </File> <!-- Log appender for GUI Log Viewer. See below. --> <GuiLogEvent name="gui-log-event"> <PatternLayout> <pattern>%d %p %c{1.}: %m%n</pattern> </PatternLayout> </GuiLogEvent> </Appenders> <Loggers> <!-- Root logger --> <Root level="info"> <AppenderRef ref="jmeter-log" /> <AppenderRef ref="gui-log-event" /> </Root> <!-- SNIP --> <!-- # Apache HttpClient logging examples --> <!-- # Enable header wire + context logging - Best for Debugging --> <!-- <Logger name="org.apache.http" level="debug" /> <Logger name="org.apache.http.wire" level="error" /> --> <!-- SNIP --> </Loggers> </Configuration>
因此,如果您想将org.apache.http类别的日志级别更改为调试级别,您可以在启动 JMeter 之前 简单地在log4j2.xml文件中添加(或取消注释)以下 logger 元素。
<Loggers> <!-- SNIP --> <Logger name="org.apache.http" level="debug" /> <!-- SNIP --> </Loggers>
有关如何配置log4j2.xml文件的更多详细信息,请参阅Apache Log4j 2 配置页面。
特定类别或根记录器的日志级别也可以直接在命令行上覆盖(而不是修改log4j2.xml)。为此,请使用以下选项:
- -L[类别]=[优先级]
- 覆盖日志记录设置,将特定类别设置为给定的优先级。从 3.2 开始,建议使用完整的类别名称(例如org.apache.jmeter或com.example.foo),但如果类别名称以jmeter或jorphan 开头,则为org.apache。 将在内部添加到类别名称输入以构造完整的类别名称(即org.apache.jmeter或org.apache.jorphan)以实现向后兼容性。
例子:
jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter -LDEBUG
日志记录的差异:旧实践与新实践:
由于 JMeter 从 3.2 开始使用 SLF4J 作为日志记录 API 和 Apache Log4j 2 作为日志框架,因此并非 3.2 之前使用的每个日志级别都可以与 SLF4J/Log4j2 提供的新可用日志级别之一完全匹配。因此,如果您需要迁移任何现有的日志记录配置和日志记录代码,请牢记以下差异和新的建议做法。
类别 | 3.2 之前的旧做法 | 自 3.2 以来的新做法 |
---|---|---|
记录器参考 |
通过LoggingManager引用记录器:
LoggingManager.getLoggerFor(String category); LoggingManager.getLoggerForClass(); |
将 SLF4J API 与类别或显式类一起使用:
LoggerFactory.getLogger(String category); LoggerFactory.getLogger(Foo.class); |
配置或命令行参数中的日志级别 |
旧日志级别:
|
通过 SLF4J/Log4j2 映射到新级别:
由于SLF4J API 不支持FATAL_ERROR,因此将其视为ERROR,而不是现有代码不中断。还有FATAL日志级别选项。
从 3.2 开始额外支持TRACE级别,它不如DEBUG特定。查阅 SLF4J 或 Apache Log4J 2 文档以了解详细信息。
|
如果 JMeter 在测试期间检测到错误,则会将一条消息写入日志文件。日志文件名在log4j2.xml文件中定义(或使用-j选项,见下文)。它默认为jmeter.log,可以在启动 JMeter 的目录中找到。
菜单
在 JMeter 主窗口的底部窗格中显示日志文件。在 GUI 模式下,日志文件中记录的错误/致命消息的数量显示在右上角。
命令行选项-j jmeterlogfile允许在读取初始属性文件之后以及处理任何其他属性之前进行处理。因此,它允许覆盖jmeter.log的默认值。将测试计划名称作为参数的 jmeter 脚本(例如jmeter-n.cmd)已更新为使用测试计划名称定义日志文件,例如对于测试计划Test27.jmx,日志文件设置为Test27。日志。
在 Windows 上运行时,该文件可能仅显示为jmeter,除非您已将 Windows 设置为显示文件扩展名。[无论如何你都应该这样做,以便更容易检测病毒和其他伪装成文本文件的恶意软件......]
除了记录错误,jmeter.log文件还记录了一些关于测试运行的信息。例如:
2017-03-01 12:19:20,314 INFO o.a.j.JMeter: Version 3.2.20170301 2017-03-01 12:19:45,314 INFO o.a.j.g.a.Load: Loading file: c:\mytestfiles\BSH.jmx 2017-03-01 12:19:52,328 INFO o.a.j.e.StandardJMeterEngine: Running the test! 2017-03-01 12:19:52,384 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1. 2017-03-01 12:19:52,485 INFO o.a.j.e.StandardJMeterEngine: Continue on error 2017-03-01 12:19:52,589 INFO o.a.j.t.JMeterThread: Thread BSH1-1 started 2017-03-01 12:19:52,590 INFO o.a.j.t.JMeterThread: Thread BSH1-1 is done 2017-03-01 12:19:52,691 INFO o.a.j.e.StandardJMeterEngine: Test has ended
日志文件有助于确定错误的原因,因为 JMeter 不会中断测试以显示错误对话框。
1.4.8 命令行选项的完整列表¶
调用 JMeter 作为“ jmeter -? ”将打印所有命令行选项的列表。这些如下所示。
--? print command line options and exit -h, --help print usage information and exit -v, --version print the version information and exit -p, --propfile <argument> the jmeter property file to use -q, --addprop <argument> additional JMeter property file(s) -t, --testfile <argument> the jmeter test(.jmx) file to run -l, --logfile <argument> the file to log samples to -i, --jmeterlogconf <argument> jmeter logging configuration file (log4j2.xml) -j, --jmeterlogfile <argument> jmeter run log file (jmeter.log) -n, --nongui run JMeter in nongui mode -s, --server run the JMeter server -H, --proxyHost <argument> Set a proxy server for JMeter to use -P, --proxyPort <argument> Set proxy server port for JMeter to use -N, --nonProxyHosts <argument> Set nonproxy host list (e.g. *.apache.org|localhost) -u, --username <argument> Set username for proxy server that JMeter is to use -a, --password <argument> Set password for proxy server that JMeter is to use -J, --jmeterproperty <argument>=<value> Define additional JMeter properties -G, --globalproperty <argument>=<value> Define Global properties (sent to servers) e.g. -Gport=123 or -Gglobal.properties -D, --systemproperty <argument>=<value> Define additional system properties -S, --systemPropertyFile <argument> additional system property file(s) -f, --forceDeleteResultFile force delete existing results files and web report folder if present before starting the test -L, --loglevel <argument>=<value> [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN -r, --runremote Start remote servers (as defined in remote_hosts) -R, --remotestart <argument> Start these remote servers (overrides remote_hosts) -d, --homedir <argument> the jmeter home directory to use -X, --remoteexit Exit the remote servers at end of test (CLI mode) -g, --reportonly <argument> generate report dashboard only, from a test results file -e, --reportatendofloadtests generate report dashboard after load test -o, --reportoutputfolder <argument> output folder for report dashboard
注意:如果 JMeter 日志文件名包含成对的单引号,则其格式为 SimpleDateFormat(应用于当前日期),例如 ' jmeter_'yyyyMMddHHmmss'.log '
如果特殊名称LAST用于-t、-j或-l标志,则 JMeter 将其视为以交互模式运行的最后一个测试计划。
1.4.9 CLI 模式关闭¶
在 2.5.1 版本之前,JMeter在 CLI 模式测试完成时 调用System.exit() 。这会导致直接调用 JMeter 的应用程序出现问题,因此 JMeter 不再调用System.exit() 来完成正常的测试。[一些致命错误可能仍会调用System.exit() ] JMeter 将退出它启动的所有非守护线程,但可能仍然存在一些非守护线程;这些将阻止JVM退出。为了检测这种情况,JMeter 在它退出之前启动一个新的守护线程。这个守护线程等待一小会儿;如果它从等待中返回,那么显然 JVM 无法退出,线程会打印一条消息说明原因。
属性jmeter.exit.check.pause可用于覆盖 2000 毫秒(2 秒)的默认暂停。如果设置为0,则 JMeter 不会启动守护线程。
1.5 配置 JMeter ¶
如果您希望修改运行 JMeter 的属性,您需要修改/bin目录中的user.properties或创建自己的jmeter.properties副本并在命令行中指定它。
参数
命令行选项和属性文件按以下顺序处理:
- -p 属性文件
- 然后加载jmeter.properties(或来自-p选项的文件)
- -j 日志文件
- 记录已初始化
- user.properties已加载
- system.properties已加载
- 处理所有其他命令行选项
另请参阅jmeter.properties、user.properties和system.properties文件中的注释,以获取有关您可以更改的其他设置的更多信息。