01开始入门
Created Tuesday 23 May 2017
1.0 概述
在使用JMeter时你们通常遵循下面的流程:
1.0.1 构建测试计划
为了构建测试计划,你需要在GUI模式下运行JMeter。
然后你可以选择从浏览器或者本地应用去录制测试。你可以通过菜单File → Templates… → Recording来实现。
注意你也可以手动的构建你的计划。确保你读了这些文档以至于能够明白主要的概念。
你会使用下面的选项之一来进行调试:
- Run → 启动不暂停
- Run → 启动
- 在线程组中进行验证
并观察结果树的渲染器或者测试仪 (CSS/JQUERY, JSON, Regexp, XPath)。确保在你构建你的测试计划时遵循了最佳实践。
1.0.2 运行负载测试
一旦你的测试计划准备好了,你可以启动你的负载测试。第一步是配置用于运行JMeter的环境,和任何其他的负载测试工具一样,都要包含:
- CPU,内存,网络项都有正确的机器尺寸
- 操作系统启动
- Java安装:确保你安装了JMeter支持的最新版本的Java
- Java堆的大小。默认JMeter使用一个512MB的堆,这也许对你的测试不够,它依赖于你的测试计划和你想要运行的线程数。
一旦所有的事情就绪,你可以使用命令行模式(称为Non-GUI模式)运行负载测试。
不要使用GUI模式运行负载测试 !
使用Non-GUI模式,你会产生一个包含测试结果的CSV(或XML)文件,并且会在测试结束的时候JMeter产生一个HTML报表。JMeter会在运行时默认地产生一个负载测试的总结。你也可以在测试期间使用后台监听器来查看实时结果。
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的classpath章节来获得安装附加jar包的详细信息。
下一步,启动JMeter,并通过构建用户指南章节中的“构建测试计划”来熟悉JMeter基础(例如,添加和移除元素)。
最终,通过对应的章节来学习何如构建指定类型的测试。例如,如果你感兴趣测试Web应用,你可以看看Building a Web Test Plan章节。其他的特殊的测试计划章节有:
- Advanced Web Test Plan
- JDBC
- FTP
- JMS Point-to-Point
- JMS Topic
- LDAP
- LDAP Extended
- WebServices (SOAP)
一旦你能够轻松的构建和运行JMeter测试计划,你可以看看各种各样的构造元素(计时器,监听器,断言和其他),用于在你的测试计划上进行更多的控制。
1.1 必须条件
JMeter需要你的计算机环境满足一些最小的要求。
1.1.1 Java 版本
JMeter需要完全兼容JVM8,我们建议你安装主版本的最新的次版本。Java9还没有对JMeter3.2进行完整的测试。
因为Jmeter只使用标准的JavaAPI,如果因为JRE安装的问题而使你的JRE不能运行JMeter,请不要发送bug报告。
1.1.2 操作系统
JMeter是一个100%的Java应用,能够在任何安装了兼容的Java的系统上正确的运行。
JMeter的操作系统测试能在JMeter wiki页面看到。
甚至你的操作系统哦那个在不再wiki页面的列表中,JMeter也能够在提供了兼容的JVM的操作系统上运行。
1.2 可选部分
如果你计划做JMeter开发,你需要一个或多个下面的可选包。
1.2.1 Java 编译
如果想要构建JMeter源或者开发JMeter插件,你需要一个完全兼容的JDK8或者更高版本。
1.2.2 SAX XML 分析器
JMeter自带Apache’s Xerces XML parser。你可以通过选项让JMeter使用不同XML分析器。这里需要添加第三方分析器到JMeter的classpath中,并更新分析器实现类的全名到jmeter.properties的文件中。
1.2.3 Email 支持
JMeter有强大的Email能力。它能够基于测试结果发送邮件,有一个POP3/IMAP取样器,还有一个SMTP取样器。
1.2.4 SSL 加密
使用SSL加密(HTTPS)测试web服务,在Sun Java1.4或以上版本,JMeter需要提供的SSL的实现。如果你的Java版本不包含SSL支持,可能需要添加外部实现。在JMeter的classpath中包含必要的加密包,同时修改system.properties来注册SSL提供者。
JMeter的HTTP默认的协议层TLS。可以通过编辑在jmeter.properties或者user.properties中JMeter的属性https.default.protocol来改变。
JMeter HTTP取样器被设定为接受所有的证书,无论是否可信,忽略每次的校验,等等。这允许在测试服务器上最大限度灵活。
如果服务器需要一个客户端证书,这也可以提供。
这里有SSL Manager,用于更好的控制证书。
JMeter代理服务器(see below)只是录制HTTPS(SSL)
SMTP取样器可以随意的使用一个本地信任或者信任所有的证书。
1.2.5 JDBC 驱动
如果想要进行JDBC测试,你需要添加你的数据库供应商的JDBC驱动到classpath中。确保是一个jar文件不是zip文件。
1.2.6 JMS 客户端
JMeter自带Apache Geronimo的JMS API,所以你只需要添加来自于JMS供应商的适当的JMS客户端的实现。详细信息请参考他们的文档,你也可以在JMeter Wike获取一些信息。
1.2.7 Libraries for ActiveMQ JMS
你需要添加activemq-all-X.X.X.jar到你的classpath中。例如,保存到lib/目录。
在ActiveMQ初始配置页中查看详细。
通过JMeter Classpath章节查看更多关于安装附加jar包的详细。
1.3 安装
我们推荐大部分用户使用最新版本。
我们通过解压zip/tar文件到我们想要安装的JMeter的目录来实现安装。你还需要正确的安装了JRE/JDK,并且设置了JAVA_HOME环境变量,就可以了。
如果目录包含了空格,这里可能会有一些问题(尤其在client-server模式下)。
安装目录结构会像这样(X.Y代表版本号):
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-jemter-X.Y),但是不能修改任何子目录的名字。
1.4 运行 JMeter
通过运行jmeter.bat(for Windows) 或者jmeter(for Unix)文件来运行JMeter。这些文件在bin目录里可以找到。等一小段时间,JMeter GUI会出现。
GUI模式应该只用于创建测试脚本,NON GUI模式应该用于负载测试。
在bin目录还有一些很有用的附加的脚本。Windows脚本文件(.CMD文件需要Win2k或者更新的版本):
- jmeter.bat 运行JMeter (GUI模式中默认)
- jmeterw.cmd 无windows的shell控制台运行JMeter(在GUI模式中默认)
- jmeter-n.cmd 拖拽一个JMX文件来运行non-GUI测试
- jmeter-n-r.cmd 拖拽一个JMX文件来运行non-GUI远程测试
- jmeter-t.cmd 拖拽一个JMX文件在GUI模式中加载
- jmeter-server.bat 使用服务器模式启动JMeter
- mirror-server.cmd 在non-GUI模式下运行JMeter镜像服务
- shutdown.cmd 使用关闭客户端优雅地停止non-GUI实例
- stoptest.cmd 使用关闭客户端立即停止non-GUI实例
在jmeter-n.cmd, jmeter-t.cmd 和 jmeter-n-r.cmd中可以使用指定名LAST,这代表最后的测试计划是交互运行的。
环境变量JVM_ARGS可以用于覆盖在jemter.bat脚本中JVM配置,例如:
set JVM_ARGS="-Xms1024m -Xmx1024m -Dpropname=propvalue"
jmeter -t test.jmx …
Unix脚本文件;应该能够在大部分Linux/Unix系统运行:
- jmeter 运行JMeter (默认是GUI模式).在有的JVM中JVM设置定义可能不好使。
- jmeter-server 使用服务器模式启动JMeter(使用适当的参数调用jmeter脚本)
- jmeter.sh 非常基础的JMeter脚本(你需要调整JVM参数,例如内存设定).
- mirror-server.sh 在non-GUI模式下运行JMeter镜像服务
- shutdown.sh 使用关闭客户端优雅地停止non-GUI实例
- stoptest.sh 使用关闭客户端立即停止non-GUI实例
如果你使用的JVM不支持一些JVM选项,那么就有必要编辑jmeter的shell脚本。JVM_ARGS环境变量可用于覆盖来设置附加JVM选项,例如:
JVM_ARGS="-Xms1024m -Xmx1024m" jmeter -t test.jmx [etc.]
在脚本中覆盖HEAP设置。
1.4.1 JMeter’s Classpath
JMeter automatically finds classes from jars in the following directories:
JMeter从以下的目录的jar包中自动的寻找class类:
- JMETER_HOME/lib 用于各种用于的jar包
- 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。从下面会看到这些差异的解释。
其他jar(例如JDBC,JMS实现类和一些其他JMeter编码使用的库类)包应该被放到lib目录-不要放在lib/ext目录,或者添加到user.classpath中。
只会发现jar文件,不包含zip文件。
你可以在$JAVA_HOME/jre/lib/ext中安装功能jar文件,或者你可以在jmeter.properties中设置属性user.classpath。
注意CLASSPATH环境变量的设置不会有影响。这是因为JMeter在启动的时候使用java -jar,在-jar使用的时候,java会默默地忽略CLASSPATH变量,和-classpath/-cp选项。
不仅仅是JMeter,任何java程序都会这样。
1.4.2 利用模板创建测试计划
你可以从存在模板创建一个新的测试计划。
你可以使用菜单File -> Templates…或者Templates图标:
Templates icon item
在弹出框中,你可以从列表中选择一个木板:
Templates popup
文件中包含了一旦模板的测试计划创建后会做什么
1.4.3 使用JMeter的代理
如果你在防火墙/代理服务器后面测试,你需要提供给JMeter防火墙/代理服务器主机名和端口号。通过在命令行中使用下面参数运行jmeter[.bat]文件:
- -H [proxy server hostname or ip address代理服务器的主机名和IP地址]
- -P [proxy server port代理服务器端口号]
- -N [nonproxy hosts非代理主机] (e.g. *.apache.org|localhost)
- -u [username for proxy authentication - if required代理认证的用户名-如果需要]
- -a [password for proxy authentication - if required代理认证的密码-如果需要]
例如:
jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
你也可以使用–proxyHost,–proxyPort,–username,和–password作为参数名
对于系统的其他用户命令行的参数更易懂。
如果代理主机和端口提供了,那么JMeter可以设置下面的系统属性:
- http.proxyHost
- http.proxyPort
- https.proxyHost
- https.proxyPort
如果无代理主机列表提供了,那么JMeter可以设置下面的系统属性:
- http.nonProxyHosts
- https.nonProxyHosts
如果你不希望同时设置http和https代理,你能够在system.properties中定义相关属性,而不是使用命令行参数。
代理配置也可以定义在测试计划里,使用HTTP Request Defaults配置或者Http Request sampler元素。
JMeter也有它自己的内置代理服务器,HTTP(s) Test Script Recorder。这只用于记录HTTP和HTTPS浏览器sessions。这和上面描述的代理设置并不冲突,当JMeter发送HTTP和HTTPS请求它自己的时候会使用到。
1.4.4 Non-GUI 模式 (命令行模式)
为了负载测试,你必须使用这种模式运行JMeter,这样可以得到最佳的结果。可以使用下面的命令行选项:
- -n 指定JMeter运行non-gui模式
- -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来控制这些服务器。你可以使用non-GUI模式来运行远程测试。通过在每个服务主机运行jmeter-server[.bat]来启动服务器。
脚本可以让你指定可选的防火墙/代理服务器信息:
- -H [代理服务器主机名或ip地址]
- -P [代理服务器端口号]
例如:
jmeter-server -H my.proxy.server -P 8000
如果想要在单个测试运行后服务器退出,可以定义JMeter属性server.exitaftertest=true。
在non-GUI模式的客户端下运行测试,使用下面的命令:
jmeter -n -t testplan.jmx -r [-Gprop=val] [-Gglobal.properties] [-X]
where:
- -G 可以定义那些在服务器上设置的JMeter属性
- -X 以为着在测试结束后推出服务器
- -Rserver1,server2 用于代替-r去提供一个启动的服务器列表,覆盖remote_hosts,但是不能在属性中定义。
如果jmeterengine.remote.system.exit属性设置为true(默认是false),那么JMeter会在测试结束时停止RMI后执行System.exit(0)。通常不需要这样。
1.4.6 通过命令行覆盖属性
Java的系统属性和JMeter属性能够通过命令行直接覆盖(而不是修改jmeter.properties)。为了实现,使用下面的选项:
- -D[prop_name]=[value] 定义java系统属性值。
- -J[prop_name]=[value] 定义本地JMeter属性。
- -G[prop_name]=[value] 定义远程服务器的JMeter属性。
- -G[propertyfile] 使用一个文件定义远程服务器的JMeter属性。
- -L[category]=[priority] 覆盖日志设置,对一个给出优先级级别设置一个特别的类别。
-L标识也可以不使用类别名,而设置root日志级别。
例子:
jmeter -Duser.dir=/home/mstover/jmeter_stuff \
-Jremote_hosts=127.0.0.1 -Ljmeter.engine=DEBUG
jmeter -LDEBUG
命令行的属性在启动早期被处理,但是还是会在日志系统建立后。
1.4.7 日志和错误消息
自3.2开始JMeter的日志不再通过配置文件例如jmeter.properties配置,而是通过JMeter启动目录下的Apache Log4j 2配置文件来配置。自3.2后,JMeter和插件的代码都要是SLF4J库来记录日志。
Here is an example log4j2.xml file which defines two log appenders and loggers for each category.
这是一个log4j2.xml文件的例子,里面为每个类别定义了两种日志appenders和日志
<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>
So, if you want to change the log level for org.apache.http category to debug level for instance, you can simply add (or uncomment) the following logger element in log4j2.xml file before launching JMeter.
如果你想在实例中修改org.apache.http类别的日志级别为debug,你仅需在启动JMeter之前添加下面的日志元素到log4j2.xml文件中。
<Loggers>
<!-- SNIP -->
<Logger name="org.apache.http" level="debug" />
<!-- SNIP -->
</Loggers>
For more detail on how to configure log4j2.xml file, please see Apache Log4j 2 Configuration page.
想要看到关于设置log4j2.xml文件更多详细,请查看Apache Log4j 2的配置页。
Log level for specific categories or root logger can be overridden directly on the command line (instead of modifying log4j2.xml) as well. To do so, use the following options:
特定类别或者根日志的日志级别可以在命令行中直接覆盖(而不是修改log4j2.xml文件)。想要做到这些,需要使用下面选项:
-L[category]=[priority]
复写日志设置,给指定类别设置一个日志优先级。自3.2开始,推荐使用全类别名e.g, org.apache.jmeter or com.example.foo),但是如果类别名jmeter 或 jorphan, org.apache使用开始,将会成为输入了一个全类别名的类别名的前缀,用于后向兼容。
Examples:
jmeter -Ljmeter.engine=DEBUG
jmeter -Lorg.apache.jmeter.engine=DEBUG
jmeter -Lcom.example.foo=DEBUG
jmeter -LDEBUG
日志的不同:新旧实践:
As JMeter uses SLF4J as logging API and Apache Log4j 2 as a logging framework since 3.2, not every log level used before 3.2 can match exactly with one of the new available log levels provided by SLF4J/Log4j2. Therefore, please keep the following differences and new suggested practices in mind if you need to migrate any existing logging configruations and logging code.
自3.2开始JMeter使用SLF4J作为日志API和Apache Log4j做为日志框架,3.2之前的日志级别不能都确切的匹配SLF4J/Log4j2的新的使用的日志级别。如果你需要合并已经存在的日志配置和日志代码,请记住下面的一些不同和实践建议。
- 3.2之前旧的习惯
- 日志通过LoggingManger引用:
- LoggingManager.getLoggerFor(String category);
- LoggingManager.getLoggerForClass();
- Old Log Levels:
- DEBUG
- INFO
- WARN
- ERROR
- FATAL_ERROR
- NONE
- 3.2之后新的习惯
- 利用类别或者明确的类使用SLF4J API:
- LoggerFactory.getLogger(String category);
- LoggerFactory.getLogger(Foo.class);
- Mapping to New Levels through SLF4J/Log4j2:
- DEBUG
- INFO
- WARN
- ERROR
- ERROR
- NONE
- Note: 因为SLF4J API不再支持’FATAL_ERROR’,所以使用”ERROR”来替代以不破坏已存在的代码。
- Note: ‘TRACE’级别比’DEBUG’的效用要低, ‘TRACE’自3,2添加支持。查看SLF4J or Apache Log4J 2 文档来获取更多详细信息。
JMeter通常不会为错误使用弹出对话框,因为这会干涉测试运行。也不会报任何变量和函数的拼写错误;反而引用直接按照名称来使用。查看函数和变量的更多信息。
If JMeter detects an error during a test, a message will be written to the log file. The log file name is defined in the log4j2.xml file (or using the -j option, see below). It defaults to jmeter.log, and will be found in the directory from which JMeter was launched.
如果JMeter在测试期间检测到一个错误,会写一条消息到日志文件。日志文件名在log4j2.xml文件中定义了(或使用-j选项来查看)。默认在jmeter.log文件中,可以在JMeter的启动目录找到这个文件。
The menu Options → Log Viewer displays the log file in a bottom pane on main JMeter window.
菜单Options->Log Viewer会将日志文件涨势在JMeter窗口的一个底部窗格。
In the GUI mode, the number of error/fatal messages logged in the log file is displayed at top-right.
在GUI模式,error/fatal消息数会展示在右顶部
Error/fatal counter
The command-line option -j jmeterlogfile allow to process after the initial properties file is read, and before any further properties are processed. It therefore allows the default of jmeter.log to be overridden. The jmeter scripts that take a test plan name as a parameter (e.g. jmeter-n.cmd) have been updated to define the log file using the test plan name, e.g. for the test plan Test27.jmx the log file is set to Test27.log.
命令行选项-j jmeter日志文件允许在初始属性文件读取后在处理,在一些更远的属性前处理。因此它重新默认值jemter.log。拿测试计划名作为一个参数(e.g. jmeter-n.cmd)的jmeter脚本 ,会使用测试计划名作为日志文件, e.g. for the test plan Test27.jmx the log file is set to Test27.log.
When running on Windows, the file may appear as just jmeter unless you have set Windows to show file extensions. [Which you should do anyway, to make it easier to detect viruses and other nasties that pretend to be text files …]
当以在窗口中运行时,除非你设置窗口去战士扩展文件,否则文件都是作为jmeter出现的。[你因该做的是,让它更容易的去发现那些假装为文件文件的病毒和脏东西…]
As well as recording errors, the jmeter.log file records some information about the test run. For example:
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
The log file can be helpful in determining the cause of an error, as JMeter does not interrupt a test to display an error dialogue.
日志文件对于断定错误的原因很有用,因为JMeter不会打断测试去展示一个错误对话。
1.4.8 命令行选项列表
调用“jmeter -?”可以打印所有的命令行选项列表。展示如下。
- –? print 打印命令行选项并退出
- -h, –help 打印使用信息并退出
- -v, –version 打印版本信息并退出
- -p, –propfile 要使用的jmeter的属性文件
- -q, –addprop 额外的JMeter属性文件
- -t, –testfile 要运行的jmeter测试(.jmx0文件
- -l, –logfile 记录取样器的文件
- -i, –jmeterlogconf jmeter的日志配置文件
- -j, –jmeterlogfile jmeter运行日志文件
- -n, –nongui 使用nongui模式
- -s, –server 运行Jmeter服务器
- -H, –proxyHost 设置JMeter的代理服务器
- -P, –proxyPort 设置JMeter的代理端口
- -N, –nonProxyHosts (e.g. *.apache.org|localhost) 设置不代理的主机列表
- -u, –username 设置JMeter的代理服务器的用户名
- -a, –password 设置JMeter的代理服务器的密码
- -J, –jmeterproperty = 定义附加JMeter属性
- -G, –globalproperty = (sent to servers) 定义全局属性
- e.g. -Gport=123 or -Gglobal.properties
- -D, –systemproperty = 定义附加系统属性
- -S, –systemPropertyFile 附件的系统属性文件
- -f, –forceDeleteResultFile 在启动测试之前强制删除存在的结果文件
- -L, –loglevel = [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com.example.foo=WARN
- -r, –runremote (as defined in remote_hosts) 启动远程服务器(在remote_hosts中定义的)
- -R, –remotestart (overrides remote_hosts)启动远程服务器(覆盖remote_hosts)
- -d, –homedir 使用的jmeter主目录
- -X, –remoteexit (non-GUI) 在测试结尾推出远程服务器
- -g, –reportonly g从一个测试结果文件产生报表面板
- -e, –reportatendofloadtests 在负载测试后生成报表面板
- -o, –reportoutputfolder 报表面板的输出文件
注意:如果JMeter日志文件名有配对的单引号,那么它就是SimpleDateFormat格式(根据当前日期),.e.g. ‘jmeter_’yyyyMMddHHmmss’.log’
如果为-f,-j或者-l标记使用了指定名LAST,那么JMeter的最后的测试计划会使用交互模式。
1.4.9 non-GUI 关闭
在2.5.1版本之前,当一个non-GUI测试完成时,JMeter会执行System.exit()。这会引起那些直接调用Jmeter的程序的问题,所以JMeter不再在一个普通测试完成后执行System.exit()。[一些错误可能调用System.exit()]JMeter将会推出所有它启动的非守护县城,但是一些非守护线程仍然存在;这将阻止JVM退出。JMeter在它退出的时候启动一个新的守护线程,就可以观察到这种情况。守护县城等待一小会儿,如果它从等待中返回,那么很清楚JVM不能够退出,并且线程会打印一个消息说明为什么。
属性jmeter.exit.check.pause能够被用于覆盖默认的2s的暂停。如果设置为0,那么JMeter不会启动守护线程。
1.5 配置JMeter
如果你希望修改JMeter运行的属性,你需要修改/bin目录下面的user.properties或者对jmeter.properties的备份并在命令行中指定。
注意:你可以在JMeter属性user.properties指定的文件中定义附加JMeter属性,默认是user.properties文件。如果在当前目录或者JMeter的bin目录下面,文件会被自动加载。同样地,system.properties可以更新system属性。
参数
- ssl.provider 如果你不想使用内置的Java实现,你可以为你的SSL实现类指定一个类。 No
- xml.parser 你可以为你的XML分析器指定一个实现,默认值是:org.apache.xerces.parsers。 No
- remote_hosts 远程JMeter主机,通常用逗号分隔(or host:port if required)。如果你在一个分布式环境运行JMeter,列出你要运行的JMeter远程服务其。可以让你通过机器的界面控制这些服务器。 No
- not_in_menu 你不想在JMeter的菜单中看见的组件列表。当JMeter添加了越来越多的组件,你可能希望配置你的JMeter只战士那些你感兴趣的组件。你可以列出类名和名称(出现在JMeter的UI里面的),他们就不再出现在菜单中了。 No
- search_paths JMeter将会搜索JMeter插件类的路径列表(使用;分隔),例如添加取样器。一个路径项可以是jar文件也可以是目录。目录下面的任何jar文件都会被自动添加到搜索路径中,子目录下的jar文件会被忽略。给定值是lib/ext目录下面的所有jar包。No
- user.classpath JMeter会搜索功能和插件依赖类的路径列表。使用你的平台路径分割符去分割多个路径。一个路径项可以是一个jar文件或者一个目录。目录下面的任何文件都会被自动添加到user.classpath。子目录下的jar文件会被忽略。给定值是lib目录下的所有jar文件。所有的项都会被添加到系统类加载其的class path下,也会添加到JMeter内置加载器的路径下。No
- plugin_dependency_paths JMeter用来搜索单元和插件以来类的路径列表(默认;分隔)。一个路径项可以是一个jar文件或者一个目录。目录下面的任何文件都会被自动添加到user.classpath,子目录下的jar文件会被忽略。给定值是在lib目录或user.classpath属性里找到所有jar包。所有项只会被JMeter的内置加载器添加。插件依赖使用plugin_dependency_paths比使用user.classpath要好。No
- user.properties 包含附加JMeter属性的文件名。在初始化属性文件后会加载,但是会在-q和-J选项执行前被处理。 No
system.properties 包含系统属性的文件名。会在-S和-D选项处理前添加。No
The command line options and properties files are processed in the following order:
命令行的选项和属性文件按以下的顺序处理:- -p propfile
- jmeter.properties (or the file from the -p option) is then loaded
- -j logfile
- Logging is initialised
- user.properties is loaded
- system.properties is loaded
- all other command-line options are processed
通过查看jmeter.properties, user.properties 和 system.properties文件的注释来查看关于你可以修改的其他设置的更多信息