1 JMeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
JMeter特点:
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
2JMeter安装
JMeter是完全java编写的一款开源性能测试工具,必须运行在java环境。所以,在安装JMeter环境前,必须安装java环境。
2.1 java环境安装
【步骤一】安装jdk
1、下载jdk,到官网下载jdk,地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、安装jdk,下载完成后,双击安装
【步骤二】配置jdk环境变量
右键计算机属性->高级系统设置->系统属性->高级->环境变量->添加如下的系统变量:
变量名:【JAVA_HOME】
变量值:【jdk的安装路径】,例如【D:\Program Files\Java\jdk1.8.0_92】
变量名:【path】
变量值:【;%JAVA_HOME%\bin;】
变量名:【CLASSPATH】
变量值:【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;】【前面的点不能漏】
【步骤三】验证jdk安装成功
开始-cmd,打开命令提示符窗口,输入java-version,出现图1-1,输入javac,如图1-2表示成功。
2.2 JMeter安装
【步骤一】安装JMeter
1、下载JMeter,官网地址:http://jmeter.apache.org/download_jmeter.cgi
2、解压JMeter安装包
【步骤二】配置Jmeter环境变量
按下面变量名和变量值配置Jmeter系统环境变量:
变量名:【JMETER_HOME】
变量值:【JMeter解压路径】,例如【F:\test\jmeter\apache-jmeter-3.0】
变量名:【CLASSPATH】
变量值:【%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;】
【步骤三】验证JMeter安装成功
进入jmeter安装路径下的bin目录,点击jmeter.bat
3.JMeter基本使用
3.1 GUI模式使用
Windows环境下,进入JMeter/bin目录,点击jmeter.bat启动JMeter。GUI页面如图。
在测试计划右键-thread-线程组(thread),添加线程组后可在线程组下添加请求、监听器等。
添加线程组:
添加请求:
添加监听器:
其他jmeter元件不再一一讲述。需要时请自行查看。
3.2 非GUI模式使用
使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源。但要在GUI模式下运行脚本,需提前在GUI 模式下调整好脚本后,通过命令行启动运行脚本:
jmeter -n -t <testplan filename> -l <listener filename>
各项参数:
-n:非GUI模式
-t:需要执行的脚本文件名,如:XX.jmx
-l:保存监控结果的文件名,如:XX.jtl
3 JMeter插件jmeter-plugin
Jmeter可通过自带的plugin-perfmon工具监控被测服务器的CPU、内存等性能指标。安装和使用步骤如下:
【步骤一】下载plugin插件
Jmeter-plugin下载地址:https://jmeter-plugins.org/downloads/all/,点击4-1图中圆圈里的:Previous ZIP Releases,下载同一个版本的extra、standard和serverAgent。
其中,extra和standard放到jmeter所在机器上,serverAgent放到被测服务器上。
extra和standard解压缩后把lib/ext下的jar包放到JMETER_HOME/lib/ext下。serverAgent在被测服务器上建个目录,解压即可。
【步骤二】在被测服务器上启动serverAgent
被测服务器上,进入serverAgent所在目录,执行【nohup ./startAgent.sh &】启动serverAgent。如图
【步骤三】在线程组添加perfmon监听器
启动jmeter,在线程组右键-监听器,添加jp@gc - PerfMon Metrics Collector。
点击Add Row,添加被监测服务器的IP和端口号就可以。端口默认是4444,如图
5 JMeter分布式
5.1 JMeter分布式原理
由于机器CPU和内存等资源有限,当一台压力机无法启动足够多的线程提供所需并发时,采用多台机器同时向被测服务器发起请求。
JMeter分布式,就是采用一台机器作为控制机(master),其他一台或多台机器为执行机(slave),master负责请求的分发,slave负责执行。
执行时,master会把脚本发送到每台slaver上,slaver 拿到脚本后就开始执行。执行完成后,slaver会把结果回传给master,master收集所有slaver的信息
并汇总。
5.2 如何使用JMeter分布式
这里以Windows机器做控制机(master),2台Linux机器做执行机(slave)为例。
【步骤一】配置执行机远程启动端口
打开slave机器的JMETER_HOME/bin/目录下的jmeter.properties文件,修改如下信息:
server_port=1099
server.rmi.localport=1099
【步骤二】配置控制机远程启动端口
打开master机器的JMETER_HOME/bin/目录下的jmeter.properties文件,修改如下信息:
remote_hosts=192.168.1.50:1099,192.168.1.51:1099(这里的IP要根据slave机器的真实IP修改,可仅添加一个,也可添加多个)
【步骤三】启动执行机上的jmeter-server
在slave机器上,进入JMETER_HOME/bin/目录,启动jmeter-server。
图中箭头处显示slave机器的IP和步骤一配置的端口
【步骤四】控制机上启动jmeter,使用分布式
在master机器上,启动jmeter,菜单栏-运行-远程启动,显示步骤二中配置的slave机器的IP和使用的端口号。选择要启动的slave机器,或者在菜单栏-运行-远程全部启动。
5.3 几个小tip
1. slave机器执行脚本时不需要启动GUI,如果引用到csv等外部的文件,则每台slaver所在的机器都需要相应位置放置该文件。
2. slave和master机器上的防火墙要关闭。
3. 只启动一个网卡,其他网卡都禁用。