Jmeter是基于Java的压力测试工具,在单台windows上使用Jmeter进行性能测试时,对本机的CPU和内存消耗是比较大的,如果并发数大(比如100、300...并发),很容易导致资源不足,吞吐量也无法达到理想的要求。于是我们想通过cmd命令行或者在Linux上使用Jmeter进行性能测试,能够大大缩减所需要的系统资源。客户端机器(window系统或者Linux服务器)作为一个控制器Master,控制多台slave机器的操作。
下面介绍一下如何部署配置来实现Jmeter分布式压测:
一、下载Jmeter文件
Linux安装Jmeter,官网下载最新的二进制安装.tgz格式的包
二、上传文件,解压
SSH连接远程Linux服务器,上传文件后,解压,tar命令解压 tar -zxvf apache-Jmeter-5.3.tgz
三、设置环境变量
- 添加环境变量,修改系统变量:vi ~/.bash_profile,
export JMETER_HOME=/apps/var/jakarta/apache-Jmeter-5.3 export CLASSPATH=JMETER_HOME/lib/ext/ApacheJmeter_core.jar:JMETER_HOME/lib/jorphan.jar:JMETER_HOME/lib/logkit-2.0.jar:CLASSPATHexport PATH=JMETER_HOME/bin:PATH
- source~/.bash_profile,让变量生效
- 设置完成后,执行Jmeter-v,如下图,安装完成
四、配置Jmeter相关文件(需要修改Master和slave机的配置)
4.1 Master控制机修改(以Windows为例)
4.1.1 Jmeter.properties修改
1>查看Linux执行机的ip地址,然后设置remote_hosts=执行机1:端口号,执行机2:端口号
2>修改server_port=1099 执行启动远程连接的端口号 ,remote_hosts配置成一致的端口号
3>server.rmi.ssl.disable=false改为 server.rmi.ssl.disable=true
4>server.rmi.localport=4000执行机Jmeter_server启动显示的端口启动的端口号
5>查找到mode=Standard 项,将其前边的注释去掉(解决Jmeter进行分布式测试,远程机器来运行脚本,在察看结果树中的响应数据项为空白)
4.1.2 Jmeter-server.sh修改
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.8.18.168地址改成本机的ip地址,执行和控制机都需要改
4.1.3 Jmeter.bat
新增set rmi_host=-Djava.rmi.server.hostname=本机ip
修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% �RAW%%rmi_host%
4.2、slave机配置修改(以Linux为例)
4.2.1 Jmeter.properties修改
1>修改server_port=1099 表示控制机要远程连接通信的端口号,即Master配置文件Jmeter.properties的remote_hosts配置的端口号
2>server.rmi.localport=4000执行机Jmeter_server启动显示的端口启动的端口号
3>server.rmi.ssl.disable=false改为 server.rmi.ssl.disable=true
4.2.2 Jmeter-server.sh修改
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.8.18.168地址改成本机的ip地址,执行和控制机都需要改
备注:如果Linux服务器自身性能优越,可以单台Linux部署多个Jmeter进行测试,具体操作如下:
a、复制Jmeter安装包,
b、修改Jmeter.properties文件的端口号 server_port=1099和server.rmi.localport=4000,更改为未被占用的端口号
c、然后修改Jmeter-server文件的启动端口号,1039即自己指定的端口号,和Jmeter.properties的server_port一致。
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.1.1.14
{DIRNAME}/Jmeter{RMI_HOST_DEF} -Dserver_port={SERVER_PORT:-1039} -s -j Jmeter-server.log"
d、完成后./Jmeter-server 启动服务
e、操作Master发起指令,进行测试
f、测试完成后,Master收集测试数据,并生成测试报告
五、其他说明:
1、参数文件:如果使用csv进行参数化,那么需要把参数文件在每台slave上拷一份且路径需要设置成一样的。
2、每台机器上安装的Jmeter版本和插件最好都一致,否则会出一些意外的问题。