1、JDK的安装:https://blog.csdn.net/gufenchen/article/details/105581495
这里面记录的jdk的安装方法;
2、Jmeter的安装:Jmeter下载地址:https://jmeter.apache.org/download_jmeter.cgi
3、在linux系统下创建:
a、mkdir /usr/local/jmeter
b、将Jmeter安装包解压到这里:unzip apache-jmeter-5.1.1.zip
c、删除 安装包:rm -f apache-jmeter-5.1.1.zip
4、配置环境变量:在/etc/profile最后一行:unset i后面加入:下面一段保存。
export JMETER_HOME=/usr/local/jmeter/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
5、执行:source /etc/profile 使配置生效。
6、验证jmeter是否安装成功:jmeter -v
7、执行压测:jmeter -n -t post.jmx -l test.jtl
参数说明:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
注意:如果未设置Jmeter的环境变量则在执行脚本的时候需要检查当前目录是否是jmetet的bin 目录下
运行示意图:
post.jmx可以事先在Widnows系统下用图形界面配置好,在导入Linux系统中,运行结果,test.jtl也需要保存之后,在widows系统下导入图形界面jmeter中进行查看。
8、Jmeter分布式压测背景:
a、GUI、非GUI的区别
首先,我们知道Jmeter有两种运行方式,GUI、非GUI。
GUI:在Windows系统上运行,图形化界面,方便查看测试结果,但是消耗压力机资源较高,容易卡死,有并发限制。
非GUI:通过命令行运行,无图形化界面,不方便查看测试结果,但是消耗压力机资源较低,可以支持较大并发。
b、通过cmd命令行,或者是在Linux上使用Jmeter进行性能测试时,能够大大缩减所需要的系统资源;但是需要将jmeter脚本上传到Linux上使用命令行方式运行,如果脚本经常改动就要频繁上传;测试完成后要把结果数据下载到本地GUI环境中查看,当结果文件较大时,下载要花费大量时间,总是有很多不方便
c、通过Jmeter远程启动功能,把一台windows机器做为控制器,远程控制其它多个windows或linux压力机,从而把压力分散到多台机器上,实现高并发功能;并在master上收集测试结果。
9、Jmeter分布式压测原理:
a、客户端机器(window系统)作为一个控制器controller,控制多台slave机器的操作。
b、Controller和slave机器上最好装有相同版本的jdk和jmeter,并配置好环境变量,安装和配置方法跟windows环境类似。
c、controller通过GUI界面启动slave机器,将jmeter压测脚本发送给每台启动的slave,slave获得脚本后开始执行。slave本地不需预先存储脚本,但是需要有脚本中的依赖文件(如csv文件等)。
d、各台slave执行完成后,将结果传回给controller,controller收集后整合显示出来。
10、Jmeter分布式压测配置:
a、在slave(Agent)机配置:
在jmeter安装目录的bin目录下找到:jmeter.properties 文件打开:vim jmeter.properties
修改这三处配置:
remote_hosts=xx.xx.xx.xx (xx.xx.xx.xx是你的Linux系统的ip地址)
server_port=1029 是jmeter(与远程主机也就是master通信的端口号;必须与master一致,默认是1099);
将server.rmi.ssl.disable=false改为true;
保存之后,执行:./jmeter-slave会错:
异常信息:服务器启动异常:java远程方法调用抛出异常:无法启动服务。localhost.localdomain是一个本地环回地址
解决方法有两种:
其一:
使用终端命令:
./jmeter-server -Djava.rmi.server.hostname=10.20.80.135
其二:在Jmeter的bin目录下:打开:vim jmeter-server文件,修改如下:
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.20.80.135
在此执行:./jmeter-server 成功运行:等待master机的控制;
如果要使远程master控制slave机需要将防火墙关闭;
b、Master机(Control)配置:
在Windows系统下,找到Jmeter的安装路径,在bin目录下打开:Jmeter.properties文件;
找到:remote_hosts=修改如下;该ip即slave机的ip地址;端口与slave机端口相同;
设置成:server.rmi.ssl.disable=true
保存之后、启动jmeter;
c、Master机(Control)机远程控制slave机:
启动jmeter之后;
运行-->启动运程主机-->选择要运行的远程slave也可以全部启动,即可完成对远程服务器的控制;
压测时,master会把jmx脚本内容发给所有的slave,由slave执行压测任务。但是数据文件不会被master发给slave,因此过程中如果需要从csv中获取数据,需要提前放到slave机器里去,或者slave机器可以连接读取的文件服务器等
注意事项:
1、修改配置文件后必须重启jmeter才能生效
2、在控制机上远程启动之前,必须先运行slave机的jmeter-server.bat
3、当jmeter脚本中需要依赖csv等数据文件时,该文件需上传至slave机,并需要设置正确的路径。
4、先配置一个slave机成功后,再依次配置多个slave机
5、当slave机是linux系统时,一般只配置一个slave机即可,除非并发特别大时,才需要配置多个slave.
6、分布式运行时,总并发数是脚本中设置的线程数 * slave机的个数,如线程数设置为10,使用3个slave机运行,则总并发数是30.