Jmeter基于Docker的分布式压测
Jmeter基于docker分布式压测的测试环境搭建
- 在本机按照自己的习惯找一个目录存放新建的Dockerfile文件
mkdir Jm_Docker
cd Jm_Docker
touch Dockerfile
- 在Dockerfile文件中写入如下内容:
FROM openjdk:8-jre-slim
MAINTAINER TesterHome
ARG JMETER_VERSION=5.1.1
# Install few utilities
RUN apt-get clean && \
apt-get update && \
apt-get -qy install \
wget \
telnet \
iputils-ping \
unzip
# Install JMeter
RUN mkdir /jmeter \
&& cd /jmeter/ \
&& wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-$JMETER_VERSION.tgz \
&& tar -xvzf apache-jmeter-$JMETER_VERSION.tgz -C /jmeter \
# Set ENV
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VERSION/
ENV PATH $JMETER_HOME/bin:$PATH
主要做的事情是做一个基础的jmeter镜像。其中做了以下事
- 定义了Jmeter的版本:JMETER_VERSION。
⚠️注意,在修改Jmeter版本时,先自己手动确认一下自己需要的版本在链接https://archive.apache.org/dist/jmeter/binaries/中存在。 - 安装自己指定的Jmeter,并配置好Jmeter的环境变量
- 在Dockerfile文件所在目录下执行以下命令。
【.】表示当前目录下即Dockerfile文件所在的目录;test1是对应镜像的标签;jm是镜像的REPOSITORY,都可以自己定义
Jm_Docker# docker build -t jm:test1 .
-
在命令行执行docker images查看所有镜像,就可以看到自己构建的jmbase镜像。
-
修改Dockerfile文件中内容如下:这个做Jmeter分布式中的slaves
# Use jmbase image
# 使用jm基本映像
FROM jm:test1
MAINTAINER TesterHome
# Ports to be exposed from the container for JMeter Slaves/Server
# 从JMeter Slaves/Server的容器中要公开的端口
EXPOSE 1099 50000
# Application to run on starting the container
# 启动容器 运行应用程序
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=50000 \
-Dserver_port=1099
-
命令行中输入
docker build -t slaves:server .
-
再次修改Dockerfile文件内容如下:做Jmeter分布式中的master
# Use jmbase image
FROM jm:test1
MAINTAINER Testerhome
# Ports to be exposed from the container for JMeter Master
EXPOSE 60000
- 命令行执行
docker build -t master:server .
- 命令行执行docker imagers就会看到如图所示已经建好的images
- 运行以下命令启动master和slaves
docker run -it -d --name jmmaster master:server
docker run -it -d --name jmslave01 slaves:server
docker run -it -d --name jmslave02 slaves:server
-
docker ps
可以看到已经运行起来的容器 - 输入以下命令找到对应的slaves的ip地址,并记录下来
docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $( docker ps -a -q)
- 配置jmeter.properties文件,修改文件中以下配置项
remote_hosts=ip1:port,ip2.port
server.rmi.ssl.disable=true
- 把修改好的配置文件放到jmmaster容器中
docker cp ./jmeter.properties jmmaster:/jmeter/apache-jmeter-5.1.1/bin/
- 再次修改一份jmeter.properties,只修改以下一项
server.rmi.ssl.disable=true
- 把修改好的文件分别放到jmslave01、jmslave02中
docker cp ./jmeter.properties jmslave01:/jmeter/apache-jmeter-5.1.1/bin/
jmeter分布式测试执行
- 把测试脚本放到jmmaster容器中
docker cp ./Ds_register.jmx jmmaster:/jmeter
- 进入jmmaster容器
docker exec -it jmmaster /bin/bash
- 执行测试脚本
jmeter -n -t /jmeter/apache-jmeter-5.1.1/bin/test1.jmx -l /test.jtl -R 172.18.0.3,172.18.0.4
- 拿出测试结果
docker cp jmmaster:/jmeter/apache-jmeter-5.1.1/bin/1.jtl ./
参考文件
https://msd.misuland.com/pd/4133852421208147062?page=1
https://blog.csdn.net/weixin_43291944/article/details/99712308
https://blog.csdn.net/zbj18314469395/article/details/104566755/
https://help.aliyun.com/document_detail/51853.html
网友评论