JMeter分布式压测
为了让jmeter工具提供更强大的负载能力,jmeter提供了多台机器同时产生负载的机制。
一、申请5台Linux服务器,配置好点。
二、分布式测试原理:其中一台作为主控机/调度机(server),其他为压力机(agent)
三、处理过程:
1)调度机server启动以后,会拷贝本地的jmx文件分发到远程的agent机器上;
2)agent机器拿到脚本以后启动命令行模式去执行脚本,对于每台agent机器拿到的脚本都是一样的,所以如果jmx脚本为50个线程跑3分钟,那么实际并发就是50*5=250个线程并发跑3分钟;
3)执行时,agent会把执行获得的数据结果传给server机器,server机器会收集所有agent机器的信息并汇总,这样server机器上就存在一份所有agent机器汇总的数据结果。
四、Jmeter分布式压测环境搭建
1、分布式环境压力服务器要求:
需要server(控制机)和agent(压力机),agent搭建在linux服务器环境下,server搭建在Linux或windows环境下。
压力测试瓶颈大都在带宽上面,需要保证压力机的带宽要比服务器的带宽高,不然压力上不去。
需要保证agent和server都在一个网络中,且在多网卡环境需要保证启动的网卡都在一个网段。
需要保证server和agent之间的时间同步。
关闭防火墙
2、Windows部署jmeter
(1)部署jdk环境,配置path变量
(2)直接去官网下载最新的二进制源码包即可。
(3)解压jmeter到指定目录,设置path变量,安装完成之后,在命令行运行jmeter命令,如果可以正常启动jmeter,说明环境配置ok。
3、Linux部署jmeter
(1)jmeter运行环境依赖java的jdk,所以需要安装jdk,jmeter5.0版本以上需要安装jdk1.8及以上版本;首先下载:jdk-8u131-linux-x64.tar.gz、apache-jmeter-5.0.zip,并上传至服务器,并解压:
tar zxvf jdk-8u131-linux-x64.tar.gz --mv jdk-8u131-linux-x64 jdk1.8
unzip -o apache-jmeter-5.0.zip --mv apache-jmeter-5.0 jmeter
(2)配置环境变量:vi /etc/profile
在文件的最后面加上需要配置的环境变量,红色路径可以根据自身环境进行修改:
JAVA_HOME=/root/gss/jdk1.8
JRE_HOME=$JAVA_HOME/jre
JMETER_HOME=/root/gss/jmeter
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$JMETER_HOME/bin/
export JMETER_HOME=/root/gss/jmeter
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
(3)立即生效配置文件,执行命令:source /etc/profile
检查安装结果:java -version、jmeter --version
(4)修改主控机启动配置使其可以调度所有压力机:
vi /root/gss/jmeter/bin/jmeter.properties
remote_hosts=127.0.0.1:1099,192.xx.xx.15:1099,192.xx.xx.16:1099,192.xx.xx.17:1099,192.xx.xx.18:1099(多台slave之前用 "," 隔开)
#server.rmi.ssl.disable=false # 此为必改项,放开注释,false改为true
说明:
1、主控机可以只是server,也可既是server也是agent:如果自身做压力机,将127.0.0.1也配置上;否则,不需要配置。
2、各个压力机的端口号可修改,也可不修改:若修改,就按新修改的端口号进行配置;没修改,jmeter默认端口号1099,直接配置也可以。
#server_port=1099 #端口号修改:放开注释,随意修改
(5)修改所有服务器的jmeter配置:
五、上传脚本到主控机上,执行脚本
jmeter -n -t login.jmx -r -l login.jtl -e -o /root/gss/report-login
jmeter参数介绍: