最近因项目需要,须对部分接口进行性能测试,但是jmeter单机并发数无法满足要求,于是在网上查阅、整理的部分资料,现将过程进行总结。
准备工作:
- Linux系统需要安装好docker环境。
- Jmeter官网下载 apache-jmeter-5.2.1.tgz 压缩包
- 准备2份 jmeter.properties ,否则每次启动容器都要修改
构建镜像
- 创建jmetermaster镜像的Dockerfile
FROM openjdk:8-jre-slim
ARG JMETER_VERSION=5.2.1
RUN mkdir /jmeter
WORKDIR /jmeter
COPY apache-jmeter-5.2.1.tgz /jmeter
RUN tar -xzf apache-jmeter-$JMETER_VERSION.tgz
ENV JMETER_HOME=/jmeter/apache-jmeter-${JMETER_VERSION}
ENV JMETER_PATH=${JMETER_HOME}/bin:${PATH}
ENV PATH=${JMETER_HOME}/bin:${PATH}
WORKDIR /jmeter/apache-jmeter-$JMETER_VERSION/bin
EXPOSE 60000
- 构建master镜像
# 构建镜像
docker build -t jmetermaster . # 注意结尾有 .
# 构建完成后查看是否在镜像列表中
docker images
为了后续使用方便,还可以将这个master镜像push到Dockerhub
# 遵循命名规范,可以修改一下镜像命名
docker tag jmetermaster chenf24k/jmetermaster :1.0
# 推送镜像到Dockerhub
docker push chenf24k/jmetermaster:1.0
- 修改一份jmeter.properties文件中的配置
server.rmi.ssl.disable=true
- 准备jmeterslave镜像的Dockerfile
FROM chenf24k/jmetermaster:1.0
WORKDIR /jmeter/apache-jmeter-5.2.1/bin
COPY jmeter.properties .
EXPOSE 1099 50000
ENTRYPOINT $JMETER_HOME/bin/jmeter-server \
-Dserver.rmi.localport=50000 \
-Dserver_port=1099
- 构建slave镜像, 顺便把执行机也推了
docker tag jmeterslave chenf24k/jmeterslave:1.0
docker push chenf24k/jmeterslave:1.0
启动容器
- 启动jmetermaster
docker run -d -it --name jmetermaster chenf24k/jmetermaster
- 启动 jmeterslave
docker run -d --name slave1 chenf24k/jmeterslave
docker run -d --name slave2 chenf24k/jmeterslave
- 查看jmeter 主机和执行机的ip
docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $( docker ps -a -q)
- 修改另一份 jmeter.properties 放入 jmetermaster
将查到的ip写入 jmeter 的配置文件中
# 两个执行机的ip:port
remote_hosts=ip1:port,ip2.port
# 同时也需要开启以下配置
server.rmi.ssl.disable=true
将修改好的jmeter.properties 放到jmetermaster容器中
docker cp ./jmeter.properties jmetermaster:/jmeter/apache-jmeter-5.2.1/bin/
- 进入jmetermaster执行测试脚本即可
jmeter -n -t /jmeter/apache-jmeter-5.2.1/bin/test1.jmx -l /test.jtl -R 172.18.0.3,172.18.0.4 -e -o /reports
本文章内容记录的是一次尝试有以下不足之处:
1.需要多次拷贝jmeter的配置文件
2.执行测试脚本还需要进入master容器中执行
3.以及报告输出的目录还可以设置共享目录,后续在琢磨了。
欢迎大家分享,交流一些好的想法和经验。