Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件。上篇文章介绍了如何使用Alpine作为基础的JMeter镜像的构建与使用方式,这篇文章在此基础之上构建一个更容易使用的JMeter的镜像。
基于Alpine的JMeter镜像
关于基于Alpine基础的JMeter镜像相关的介绍和使用方式,可以参看如下内容:
- https://blog.csdn.net/liumiaocn/article/details/101919657
基于容器的分布式压测环境
在JMeter创建的容器化的分布式压测环境中通过JMX定义压测内容,通过卷交换数据,使用Master节点进行作业的分配,在Slave节点上运行具体的压测内容。一个非常简单的一主多从构成的容器化分布式压测环境可以参看下图。
分布式压测镜像
使用JMeter进行分布式压力测试时,我们知道至少需要设定如下内容:
Slave节点
- 机器所在的IP信息
- 与主节点关联的Port信息
Master节点
- Slave节点列表信息(包括IP和PORT)
非容器化的压测环境构建与执行的示例可以参看如下内容,以对此进一步加深理解:
- https://blog.csdn.net/liumiaocn/article/details/101638943
Dockerfile内容
###############################################################################
#
#IMAGE: JMeter(Alpine)
#VERSION: 5.1.1
#BASE: Alpine 3.10.2
#
###############################################################################
FROM alpine:3.10.2
###############################################################################
#MAINTAINER
###############################################################################
MAINTAINER LiuMiao
###############################################################################
#ARG Setting
###############################################################################
ARG VERSION_JMETER="5.1.1"
###############################################################################
#ENV Setting
###############################################################################
ENV FILENAME_JMETER apache-jmeter-${VERSION_JMETER}
ENV HOME_JMETER /usr/local/${FILENAME_JMETER}
ENV DOWNLOAD_URL_JMETER https://archive.apache.org/dist/jmeter/binaries/${FILENAME_JMETER}.tgz
ENV DOWNLOAD_DIR_LOCAL /tmp/download
ENV PATH $PATH:${HOME_JMETER}/bin
###############################################################################
#Install && Setting
###############################################################################
RUN apk update \
&& apk upgrade \
&& apk add --update openjdk8-jre curl unzip bash \
&& mkdir -p /tmp/download \
&& curl -L --silent ${DOWNLOAD_URL_JMETER} > ${DOWNLOAD_DIR_LOCAL}/${FILENAME_JMETER}.tgz \
&& mkdir -p /opt ${DOWNLOAD_DIR_LOCAL} \
&& tar -xzf ${DOWNLOAD_DIR_LOCAL}/${FILENAME_JMETER}.tgz -C /usr/local \
&& rm -rf /var/cache/apk/* \
&& rm -rf ${DOWNLOAD_DIR_LOCAL}
###############################################################################
#Prepare Setting
###############################################################################
#COPY entrypoint.sh /
WORKDIR ${HOME_JMETER}/bin
# ENTRYPOINT ["/entrypoint.sh"]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
注:内容放到了github的easypack下,后续根据需要可能会将功能进行更为简易的封装,通过entrypoint.sh更为方便的使用,但是目前的这种最为方便的方式已经可以用于构建容器化的分布式JMeter压测环境了。
镜像下载
liumiaocn:~ liumiao$ docker pull liumiaocn/jmeter:5.1.1
5.1.1: Pulling from liumiaocn/jmeter
9d48c3bd43c5: Already exists
b2da696b9ce3: Pull complete
Digest: sha256:bd7bb96d90b5ac7c8f72f147fc0b063bf845aa5f8daee48a1c525a1479d27d91
Status: Downloaded newer image for liumiaocn/jmeter:5.1.1
liumiaocn:~ liumiao$ docker images |grep jmeter |grep 5.1.1 |grep liumiaocn
liumiaocn/jmeter 5.1.1 9e0fdc73a1d9 8 hours ago 190MB
liumiaocn:~ liumiao$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
JMeter Slave节点启动方法
启动命令示例:
docker run -it -p 31099:1099 jmeter jmeter -Dserver.rmi.ssl.disable=true -s -j /tmp/jmeter-slave.log
JMeter Master节点调用方法
Master节点可以只在调用的时候启动(事前需要准备jmx文件),启动示例命令如下所示
启动命令示例:
docker run -it -v $(pwd)/data:/data jmeter jmeter -n -t /data/httprequest.jmx -R 192.168.31.242:31099 -Dserver.rmi.ssl.disable=true -l /tmp/jmeter-result.jtl -j /tmp/jmeter-test.log