入门
- 开始使用 JMeter 最容易的方法是首先下载最新版 并且安装它。这个版本包含所 有你在构建和运行 Web,FTP,JDBC,和 JNDI 等测试时使用需要的所有文件。
- 如果你想执行 JDBC 测试,你当然需要从供应商得到适当的 JDBC 驱动。JMeter 没有提供任何 JDBC 驱动。
你可能需要下载的其它软件:
- BeanShell - BeanShell 函数和测试元件需要
- Java Activation Framework - JavaMail 需要
- Java Mail - Mail 可视化,Mail Reader 和 WebService(SOAP)取样器需要
- JMS - JMS 取样器需要
- General Java download page
需求
JMeter 需要最小需求的运行环境。
Java 版本
JMeter 需要一个完全适当的 JVM1.4 或者更高因为 JMeter 仅使用 Java 标准 API,
操作系统
JMeter 是 100%纯 Java 应用程序并且能够正确的在任何有适当的 Java 实现的操 作系统上运行。
JMeter 在下列环境已经被测试:
- Unix (Solaris, Linux, 等)
- Windows (98, NT, 2000, xp)
- OpenVMS Alpha 7.3+
可选
如果你计划做 JMeter 开发或者想使用 SUN 的 java 标准扩展包,你将需要下列更 多的可选包。
Java 编译器
如果你想编译 JMeter 源代码或者开发 JMeter 插件,你将需要一个完整的适当的 JDK1.4 或者更高。
SAX XML 解析器
JMeter 使用 Apache 的 Xerces XML 解析器,你可以选择告诉 JMeter 使用一 个不同的 XML 解析器。 这样做,把第三方的解析器的类包包含在 JMeter 的 classpath 中, 并更新 jmeter.properties 文件里的解析器实现的全类名。
Email 支持
JMeter 有有限的 Email 能力。 它能够发送基于测试结果的 Email,并且支持 POP/IMAP 取样器。它现在不支持 SMTP 取样。 为了能够支持 Email, 需要添加 Sun 的 JavaMail 包和 activation 包到 JMeter classpath 。
SSL 加密
- 为了测试一个使用 SSL 加密(HPPS)的 web 服务器, JMeter 需要一个提供 SSL 实现 (例如 Sun 的 Java Secure Sockets Extension - JSSE)。包含需要的加 密包到 JMeter 的 classpath。 同样,通过注册 SSL 提供者更新 system.properties 文件。
- JMeter 默认协议等级 TLS(传输层安全性)。这可以通过修改在 jmeter.proerties 或者 user.properties 文件中的"https.default.protocol"来改变。
- JMeter 被配置接受所有的证书,不管是否信赖和合法时间等。这允许在测试服 务器最大灵活性。
- 如果服务器需要一个客户端证书,这是可以提供的。
- 为了更好的管理证书,也要有一个 SSL 管理器 。
JMeter 代理服务器(见下)不支持记录 SSL(https)。
JDBC 驱动
如果你需要 JDBC 测试,需要添加厂商的 JDBC 驱动到 classpath。确认文件是一 个 jar 文件,而不是 zip。
Apache SOAP
Apache SOAP 需要 mail.jar 和 activation.jar. 你需要下载并拷贝这两个 jar 文件到你 jmeter/lib 目录.一旦文件放到那里,JMeter 会自动找到它们。
BeanShell
为了运行 BeanShell 函数或者任何 BeanShell 测试元件(取样器,定时器等), 你需要从 http://www.beanshell.org/ 下载 beanshell 的 jar 文件并拷贝 jar 文件到 jmeter/lib 目录,JMeter 会自动找到它。
ActiveMQ 3.0 类库
详细参见 http://activemq.apache.org/initial-configuration.html
详细参见 JMeter Classpath 一章安装附加的 jar 包
安装
避免在一个有空格的路径安装 JMeter。这将导致远程测试出现问题。
我们推荐大多数用户运行最新版本 。
要安装一个构建版本,简单解压 zip/tar 文件到你想安装 JMeter 的目录。保证 一个 JRE/JDK 正确的安装并且设置环境变量 JAVA_HOME,其它不需要做什么了。
安装目录接口应该看到的像这样一些东西(2.3.1 版本):
jakarta-jmeter-2.3.1
jakarta-jmeter-2.3.1/bin
jakarta-jmeter-2.3.1/docs
jakarta-jmeter-2.3.1/extras
jakarta-jmeter-2.3.1/lib/
jakarta-jmeter-2.3.1/lib/ext
jakarta-jmeter-2.3.1/lib/junit
jakarta-jmeter-2.3.1/printable_docs
如果你想的话你可以重命名父目录(例如 jakarta-jmeter-2.3.1) ,但是不要 改变任何子目录命。父目录路径中不能包含任何空格;如果包含,你运行客户端 -服务器模式会有问题。
运行 JMeter
- 要运行 JMeter, 运行 jmeter.bat (for Windows) 或者 jmeter (for Unix) 文 件。那些文件在 bin 目录下。稍微暂停后,JMeter GUI 会显示出来。
- 在 bin 目录你会发现有些附加脚本很有用。Windows 脚本文件(CMD 文件需要 Win2K 或者更新):
- jmeter.bat - 运行 JMeter(默认在 GUI 模式)
- jmeter-n.cmd - 使用一个 JMX 文件运行非 GUI 测试
- jmeter-n-r.cmd - 使用一个 JMX 文件远程运行一个非 GUI 测试
- jmeter-t.cmd - 在 GUI 模式使用一个 JMX 文件
- jmeter-server.bat - 以服务器模式启动 JMeter
注意: LAST 可以在 jmeter-n.cmd, jmeter-t.cmd 和 jmeter-n-r.cmd 中使用, 意味着最后一次测试会运行.
Unix 脚本文件; 可以运行在大多 Linux/Unix 系统.
- jmeter - 运行 JMeter(默认在 GUI 模式)
- jmeter-server - 以服务器模式启动 JMeter
JMeter Classpath
JMeter 自动从下列目录中的 jar 文件发现类。
- JMETER_HOME/lib - 用来放使用的 jar 文件
- JMETER_HOME/lib/ext - 用来放 JMeter 组件和扩展
如果你开发新的 JMeter 组件,你可以压缩它们成 jar 包并拷贝到 JMeter 的 /lib/ext 目录。JMeter 将会自动发现在这里的任何 jar 文件中的 JMeter 组件。
支持的 jar 文件(类库)应该放在 lib 目录.
如果你不想把扩展 jar 包放到 lib/ext 目录,可以在 jmeter.properties 中定义 search_paths 属性。不要使用 lib/ext 给那些公用的 jar 包;它仅仅是存放 JMeter 组件。
其他 jar 包 (例如 JDBC, 和任何 JMeter 代码需要支持的类库)应该被代替放在 lib 目录 - 而不是 lib/ext 目录。
注意 JMeter 会发现.jar 文件,而不是.zip 文件。
- 你可以在$JAVA_HOME/jre/lib/ext安装有用的jar文件,或者(自从 2.1.1版本) 你可以在 jmeter.properties 中设置 user.classpath 属性。
- 注意设置 CLASSPATH 环境变量将不起作用。这是因为 JMeter 使用"java --jar" 启动,并且 java 命令无记录忽略 CLASSPATH 变量,并且当使用-jar 选项时 -classpath/-cp 选项也被使用。[所有的 java 程序都是这样,不仅仅是 JMeter。]
使用代理服务器
如果你从防火墙/代理服务器后测试,你需要提供给 JMeter 防火墙/代理服务器 的主机名和端口号。这样做,从命令行使用以下参数运行 jmeter.bat/jmeter 文件:
-H [代理服务器主机名或者 ip 地址]
-P [代理服务器端口]
-N [非代理主机] (例如: *.apache.org|localhost)
-u [代理证书用户名- 如果需要]
-a [代理证书密码 - 如果需要]
例如 : jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
或者, 你使用 --proxyHost, --proxyPort, --username, and --password
JMeter 也有自己的内建 HTTP 代理服务器,来记录 HTTP(不是 HTTPS) 浏览器会话。这是和上面的代理设置描述不混淆的,它是在 JMeter 发出 HTTP 或者 HTTPS 请求时使用的
非用户界面模式 (命令行模式)
为了不相互影响测试, 你可以选择运行没有用户界面的 JMeter。这样做,使用 下列命令选项:
-n 这是指定 JMeter 在非用户界面模式运行
-t [包含测试计划的 JMX 文件的名字]
-l [记录取样结果的 JTL 文件的名字]
-r 运行在 jmeter.properties 文件里所有的远程服务器 (或者通过在命令行覆 盖属性指定远程服务器)
这个脚本也允许我们指定可选的防火墙/代理服务器信息:
-H [代理服务器主机名或者 ip 地址]
-P [代理服务器端口]
例如 : jmeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000
服务器模式
为了分布测试 ,在服务器模式运行 JMeter,并且通过用户界面控制每一台服务 器。
运行 jmeter-server/jmeter-server.bat,加上下列选项命令:
这个脚本也允许我们指定可选的防火墙/代理服务器信息:
-H [代理服务器主机名或者 ip 地址]
-P [代理服务器端口]
例如 : jmeter-server -H my.proxy.server -P 8000
通过命令行覆盖属性
Java 系统属性,JMeter 属性,和日志属性可以通过命令行直接覆盖(代替更改 jmeter.properties 文件)。这样做,使用下列选项:
-D[prop_name]=[value] - 定义一个 java 系统属性值。
-J[prop name]=[value] - 覆盖一个 JMeter 属性。
-L[category]=[priority] - 覆盖一个日志设置,设置一个特殊目录为给定的优 先级。
-L 标志也可以使用没有目录名来设置根目录日志等级。
例如 :
jmeter -Duser.dir=/home/mstover/jmeter_stuff \
-Jremote_hosts=127.0.0.1
-Ljmeter.engine=DEBUG jmeter -LDEBUG
日志和错误信息
如果 JMeter 发现一个错误, 一个消息将被写入日志文件。日志文件名在 jmeter.properties 文件中定义。一般定义为 jmeter.log 。并且在 JMeter 启 动目录,例如 bin。
当在 Windows 下运行时,如果你不设置 Windows 显示文件扩展名,文件名会仅显 示为 JMeter。[你可以做一些事都很容易地发现伪装成文本文件的病毒和垃圾文 件...]
还有记录错误,jmeter.log 文件记录一些测试运行信息。例如:
10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.20031002
10/17/2003 12:19:45 PM INFO - jmeter.gui.action.Load: Loading file: c:\mytestfiles\BSH.jmx
10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Running the test!
10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.
10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Continue on error 10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 started 10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done 10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has ended
日志文件对发现错误原因很有帮助,作为 JMeter 不会打断一个测试来显示一个 错误对话框。
命令行选项目录
调用 JMeter 的 "jmeter -?"命令将打印所有命令选项的一个列表。列表如下:
-h, --help 打印使用信息并退出
-v, --version 打印版本信息并推出
-p, --propfile {argument} 使用的 JMeter 属性文件
-q, --addprop {argument} 附加的属性文件
-t, --testfile {argument} 运行的 JMeter 测试文件(.jmx)
-l, --logfile {argument} 日志取样文件
-n, --nongui 非用户界面运行 JMeter
-s, --server 运行 JMeter 服务器
-H, --proxyHost {argument} 设置 JMeter 使用的代理服务器
-P, --proxyPort {argument} 设置 JMeter 使用的代理服务器端口
-u, --username {argument} 设置 JMeter 使用的代理服务器用户名 -
a, --password {argument} 设置 JMeter 使用的代理服务器密码
-J, --jmeterproperty {argument}={value} 定义附加的 JMeter 属性
-D, --systemproperty {argument}={value} 定义附加的 System 属性
-S, --systemPropertyFile {filename} 一个属性文件被做为系统属性添加
-L, --loglevel {argument}={value} 定义日志等级: [category=]level 例如 jorphan=INFO or jmeter.util=DEBUG
-r, --runremote 从非用户界面模式启动远程服务器
-d, --homedir {argument} 使用的 JMeter 目录
配置 JMeter
如果你希望改变 JMeter 运行时的属性你需要改变在/bin 目录的 jmeter.properties 文件,或者创建你自己的 jmeter.properties 文件并且在命 令行指定它。