一、准备安装包:
1、JDK
下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
下载版本:
2、Jmeter
下载地址:http://jmeter.apache.org/download_jmeter.cgi
下载版本:
二、上传包到Linux系统中
Linux基本操作不做赘述,如图所示,上传包成功
三、安装JDK
1、安装程序一般放在/usr目录下,在该目录下新建java文件夹,将/home/aying目录下的安装包解压到java文件夹中
2、修改配置文件,设置环境变量,重启服务,查看安装是否成功。
Vi /etc/profile
export JAVA_HOME=/usr/java/1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
进入 /etc目录,输入命令source profile
查看安装是否成功
Java version "1.8.0_231"
Java™ SE Runtime Environment (build 1.8.0_231-bll)
Java HotSpot™ Client VM (bulid 25.231-bll,mixed mode)
四、安装jmeter
1、cd /usr #进入安装目录
2、cp /home/aying/apache-imeter-5.1.1.tgz . # 复制安装文件到安装目录
3、tar -xvf apache-imeter-5.1.1.tgz #解压安装文件
4、cd /usr/apache-imeter-5.1.1/bin #进入解压包的bin目录
5、chomd 777 jmeter.sh* #修改jmeter.sh文件的权限为777
6、sh jmeter.sh -v # 查看是否安装成功
7、配置环境变量vim /etc/profile,在文件中添加以下内容:(跟配置java环境变量步骤一样)
export JMETER_HOME=/usr//apache-jmeter-5.1.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
保存,退出。
5、source /etc/profile #让配置文件实时生效
五、执行脚本(没有接口可以调用演示,所以此处直说步骤)
1、在本地windows系统下Jmeter的GUI界面编写性能测试脚本
2、将该脚本上传到linux系统中Jmeter解压包的bin目录中
3、进入bin目录执行命令sh jmeter.sh -n -t test.jmx -l /test.jtl
4、去bin目录中查看生成test.jtl文件,下载文件到Windows系统中,在JMeter的 GUI 界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击 "浏览..." 按钮找到你刚生成的 jtl 文件打开即可统计结果进行分析。
六、部署Jmeter分布式环境并配置(没有多台服务器演示,复制别人的步骤,原理和过程准确无误,照着配置,多尝试几次肯定成功)
在使用Jmeter进行性能测试时,如果并发数比较大(如,需要支持1000个并发),单台机器的配置(CPU和内存)可能无法达到,这时可能使用jmeter提供的分布式测试功能,在测试之前需要完成以下前提条件:
1)所有的客户端都在同一个子网上
2)确保在所有系统上使用了相同版本的Jmeter和java
3)脚本文件和参数化文件需要都放在一样的路径下面
4)系统上的防护墙被关闭或者正确的端口/服务被打开
分布式测试原理图:
1、Jmeter分布式测试时,选择其中一台作为调度机(master/Controller),其它机器做为执行机(slave/Agent)。
2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,应该是通过命令行模式执行的。
3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。
注意:
(1)每一台jmeter远程服务器(slave机器)都执行相同的测试计划,jmeter不会在执行期间做负载均衡,每一台服务器都会完整地运行测试计划;
(2)采用JMeter远程模式并不会比独立运行相同数目的非GUI测试更耗费资源。但是,如果使用大量的JMeter远程服务器,可能会导致客户端过载,或者网络连接发生拥塞;
(3)默认情况下,master机器是不执行参与生成并发数据的;
(4)调度机(master)和执行机(slave)最好分开,由于master需要发送信息给slave并且会接收slave回传回来的测试数据,所以mater自身会有消耗,所以建议单独用一台机器作为mater。
下面开始实施吧。
首先,按照前面安装jmeter的步骤,在其他linux上安装jdk和jmeter(jdk和jmeter的版本以及安装路径要保持一致,不然可能会出错,无法成功执行)
确保环境搭建完成以后,进入jmeter的安装目录,进入bin下,启动jmeter-server(如果没有可执行权限,要先添加权限,root用户没有权限限制)
所有的slave机器都要启动jmeter-server,默认端口是1099,可以通过修改jmeter.properties文件进行修改。回到master机器上,修改jmeter.properties文件中的remote_hosts,将slave机器的ip地址添加上去,多个ip之间用逗号隔开。其中127.0.0.1表示master机器本身,为了独立开master,可以将其去掉,这样就不会在master上执行测试。
然后在master机器上执行下面的命令:
jmeter -n -t test.jmx -R ip1,ip2,ip3 -l testReport.jtl
其中 -R 指定远程连接的slave机器的ip地址,多个ip之间用逗号隔开。
七、分布式配置过程中可能会遇到的错误及解决办法
问题1:
在slava机器上执行jmeter-server的时候,会出现以下的问题:(以下为本人遇到的问题)
1、出现 XII DISPLAY 这样的错误,可以先执行下面命令:
echo $DISPLAY
如果内容为空(我就是内容为空),那么,就继续执行下面的命令:
DISPLAY=:0
#DISPLAY=localhost:0.0
上面两个都可以
问题2:
jmeter-server启动失败。通常有以下两个错误:
1、Unable to get local host IP address
2、xxx is a loopback address
一般上面的两个问题,都是由host文件引起的,我们需要修改host文件,可以执行下面的命令:
vi /etc/hosts
我是将127.0.0.1替换成本机ip地址的。
问题3:
jmeter-server启动成功,但是在master上无法执行分布式测试。
我这边抛出的错误是:”No route to host“
这个问题是由防火墙引起的,也就是说,slave上的防火墙没有关闭,此时,我们需要到slave上关掉防火墙。之后就可以正常运行了。关闭防火墙的方法多种,我这里特别记录下我自己红帽子7虚拟机的命令:
#查看防火墙状态
systemctl status firewalld
#关闭防火墙
systemctl stop firewalld
欢迎关注公众号: 捉虫记