压力测试工具Apache JMeter:8:基于Alpine的JMeter镜像

本文介绍了如何基于Alpine Linux构建Apache JMeter的Docker镜像,通过Dockerfile详细展示了构建过程。接着,文章阐述了如何准备压力测试应用,包括启动Nginx作为测试目标,创建jmx文件。最后,文中说明了如何执行JMeter测试,生成结果,并检查压测报告。
摘要由CSDN通过智能技术生成

在这里插入图片描述
Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件。这篇文章介绍一下如何使用Alpine基础镜像将JMeter的压测能力进行容器化,并结合具体的示例来演示此镜像从构建到使用的整体过程。

以Alpine为基础构建JMeter镜像

Alpine镜像的特点就是小,在Alpine镜像之上安装jre,并下载JMeter并解压,设定环境变量就完成了JMeter的镜像。

Dockerfile

  • 示例的Dockerfile如下所示
[root@liumiaocn jmeter]# ls
Dockerfile
[root@liumiaocn jmeter]# cat Dockerfile 
FROM alpine:3.10.2

ARG VERSION_JMETER="5.1.1"
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

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}

ENV PATH $PATH:${HOME_JMETER}/bin
WORKDIR	${HOME_JMETER}/bin
[root@liumiaocn jmeter]# 

注:此处为了减小size使用的JRE,但是由于JMeter一部分功能是在keytool基础上的,所以实际使用的时候还是根据情况换成jdk,或者选择相关的apk包进行安装达到要求。

构建JMeter镜像

  • 使用docker build构建JMeter的镜像,输入日志如下所示
[root@liumiaocn jmeter]# docker build -t jmeter:5.1.1 .
Sending build context to Docker daemon  2.56 kB
Step 1/9 : FROM alpine:3.10.2
 ---> 961769676411
Step 2/9 : ARG VERSION_JMETER="5.1.1"
 ---> Using cache
 ---> f4f342eab6ba
Step 3/9 : ENV FILENAME_JMETER apache-jmeter-${VERSION_JMETER}
 ---> Using cache
 ---> f8ca701c741b
Step 4/9 : ENV HOME_JMETER /usr/local/${FILENAME_JMETER}
 ---> Using cache
 ---> 056cc7e91e6f
Step 5/9 : ENV DOWNLOAD_URL_JMETER https://archive.apache.org/dist/jmeter/binaries/${FILENAME_JMETER}.tgz
 ---> Using cache
 ---> 49e87f232d91
Step 6/9 : ENV DOWNLOAD_DIR_LOCAL /tmp/download
 ---> Using cache
 ---> 58cb1fc2f1f3
Step 7/9 : RUN apk update                                           && apk upgrade                                       && apk add --update openjdk8-jre curl unzip bash     && mkdir -p /tmp/download                            && curl -L --silent ${DOWNLOAD_URL_JMETER} -o ${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}
 ---> Running in 908fac559368

fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
v3.10.2-80-g68e4e4a13a [http://dl-cdn.alpinelinux.org/alpine/v3.10/main]
v3.10.2-83-g64319a6606 [http://dl-cdn.alpinelinux.org/alpine/v3.10/community]
OK: 10336 distinct packages available
(1/2) Upgrading libcrypto1.1 (1.1.1c-r0 -> 1.1.1d-r0)
(2/2) Upgrading libssl1.1 (1.1.1c-r0 -> 1.1.1d-r0)
OK: 6 MiB in 14 packages
(1/48) Installing ncurses-terminfo-base (6.1_p20190518-r0)
...省略
(48/48) Installing unzip (6.0-r4)
Executing busybox-1.30.1-r2.trigger
Executing ca-certificates-20190108-r0.trigger
Executing java-common-0.2-r0.trigger
OK: 95 MiB in 62 packages
 ---> 655fe0283c8d
Removing intermediate container 908fac559368
Step 8/9 : ENV PATH $PATH:${HOME_JMETER}/bin
 ---> Running in 9c731c259c57
 ---> e32e05b622a9
Removing intermediate container 9c731c259c57
Step 9/9 : WORKDIR ${HOME_JMETER}/bin
 ---> 45f070d75ce2
Removing intermediate container 958b82eaf6e0
Successfully built 45f070d75ce2
[root@liumiaocn jmeter]# 
[root@liumiaocn jmeter]# docker images |grep jmeter |grep 5.1.1
jmeter                         5.1.1               45f070d75ce2        16 seconds ago      190 MB
[root@liumiaocn jmeter]# 

测试准备

压力测试应用准备

在本地机器的8088端口使用Docker启动一个Nginx应用(使用其他方式也可),示例如下所示:

liumiaocn:~ liumiao$ docker images |grep nginx |grep latest
nginx                                           latest                          e445ab08b2be        2 months ago        126MB
liumiaocn:~ liumiao$ docker run -p 8088:80 -d --name=nginx-test nginx:latest
a80fb1a4fc20627891a6bd7394fd79ae9aefb7dc8cf72c12967bc2673a815308
liumiaocn:~ liumiao$ 

使用curl命令或者直接使用浏览器确认nginx已正常运行

liumiaocn:~ liumiao$ curl http://localhost:8088/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
liumiaocn:~ liumiao$

准备jmx文件

jmx文件信息如下所示

liumiaocn:data liumiao$ ls
jmeter-nongui-test.jmx
liumiaocn:data liumiao$ cat jmeter-nongui-test.jmx 
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter=
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jmeter各个版本下载地址(包括所有版本) [ ] apache-jmeter-2.10.tgz 2013-10-20 16:32 28M [TXT] apache-jmeter-2.10.tgz.asc 2013-10-20 16:32 836 [ ] apache-jmeter-2.10.tgz.md5 2013-10-20 16:32 56 [ ] apache-jmeter-2.10.tgz.sha 2013-10-20 16:32 64 [ ] apache-jmeter-2.10.zip 2013-10-20 16:32 30M [TXT] apache-jmeter-2.10.zip.asc 2013-10-20 16:32 836 [ ] apache-jmeter-2.10.zip.md5 2013-10-20 16:32 56 [ ] apache-jmeter-2.10.zip.sha 2013-10-20 16:32 64 [ ] apache-jmeter-2.11.tgz 2014-01-04 13:30 28M [TXT] apache-jmeter-2.11.tgz.asc 2014-01-04 13:30 836 [ ] apache-jmeter-2.11.tgz.md5 2014-01-04 13:30 56 [ ] apache-jmeter-2.11.tgz.sha 2014-01-04 13:30 64 [ ] apache-jmeter-2.11.zip 2014-01-04 13:30 30M [TXT] apache-jmeter-2.11.zip.asc 2014-01-04 13:30 836 [ ] apache-jmeter-2.11.zip.md5 2014-01-04 13:30 56 [ ] apache-jmeter-2.11.zip.sha 2014-01-04 13:30 64 [ ] apache-jmeter-2.12.tgz 2014-11-09 10:42 30M [TXT] apache-jmeter-2.12.tgz.asc 2014-11-09 10:42 836 [ ] apache-jmeter-2.12.tgz.md5 2014-11-09 10:42 56 [ ] apache-jmeter-2.12.tgz.sha 2014-11-09 10:42 64 [ ] apache-jmeter-2.12.zip 2014-11-09 10:42 32M [TXT] apache-jmeter-2.12.zip.asc 2014-11-09 10:42 836 [ ] apache-jmeter-2.12.zip.md5 2014-11-09 10:42 56 [ ] apache-jmeter-2.12.zip.sha 2014-11-09 10:42 64 [ ] apache-jmeter-2.13.tgz 2015-03-13 19:30 34M [TXT] apache-jmeter-2.13.tgz.asc 2015-03-13 19:30 819 [ ] apache-jmeter-2.13.tgz.md5 2015-03-13 19:30 56 [ ] apache-jmeter-2.13.tgz.sha 2015-03-13 19:30 64 [ ] apache-jmeter-2.13.zip 2015-03-13 19:30 36M [TXT] apache-jmeter-2.13.zip.asc 2015-03-13 19:30 819 [ ] apache-jmeter-2.13.zip.md5 2015-03-13 19:30 56 [ ] apache-jmeter-2.13.zip.sha 2015-03-13 19:30 64 [ ] apache-jmeter-2.6.tgz 2012-02-01 19:59 21M [TXT] apache-jmeter-2.6.tgz.asc 2012-02-01 19:59 836 [ ] apache-jmeter-2.6.tgz.md5 2012-02-01 19:59 55 [ ] apache-jmeter-2.6.tgz.sha 2012-02-01 19:59 63 [ ] apache-jmeter-2.6.zip 2012-02-01 19:59 23M [TXT] apache-jmeter-2.6.zip.asc 2012-02-01 19:59 836 [ ] apache-jmeter-2.6.zip.md5 2012-02-01 19:59 55 [ ] apache-jmeter-2.6.zip.sha 2012-02-01 19:59 63 [ ] apache-jmeter-2.7.tgz 2012-05-27 21:08 22M [TXT] apache-jmeter-2.7.tgz.asc 2012-05-27 21:08 836 [ ] apache-jmeter-2.7.tgz.md5 2012-05-27 21:08 55 [ ] apache-jmeter-2.7.tgz.sha 2012-05-27 21:08 63 [ ] apache-jmeter-2.7.zip 2012-05-27 21:08 24M [TXT] apache-jmeter-2.7.zip.asc 2012-05-27 21:08 836 [ ] apache-jmeter-2.7.zip.md5 2012-05-27 21:08 55 [ ] apache-jmeter-2.7.zip.sha 2012-05-27 21:08 63 [ ] apache-jmeter-2.8.tgz 2012-11-26 01:30 23M [TXT] apache-jmeter-2.8.tgz.asc 2012-11-26 01:30 836 [ ] apache-jmeter-2.8.tgz.md5 2012-11-26 01:30 55 [ ] apache-jmeter-2.8.tgz.sha 2012-11-26 01:30 63 [ ] apache-jmeter-2.8.zip 2012-11-26 01:30 25M [TXT] apache-jmeter-2.8.zip.asc 2012-11-26 01:30 836 [ ] apache-jmeter-2.8.zip.md5 2012-11-26 01:30 55 [ ] apache-jmeter-2.8.zip.sha 2012-11-26 01:30 63 [ ] apache-jmeter-2.9.tgz 2013-01-27 17:28 25M [TXT] apache-jmeter-2.9.tgz.asc 2013-01-27 17:28 836 [ ] apache-jmeter-2.9.tgz.md5 2013-01-27 17:28 55 [ ] apache-jmeter-2.9.tgz.sha 2013-01-27 17:28 63 [ ] apache-jmeter-2.9.zip 2013-01-27 17:28 27M [TXT] apache-jmeter-2.9.zip.asc 2013-01-27 17:28 836 [ ] apache-jmeter-2.9.zip.md5 2013-01-27 17:28 55 [ ] apache-jmeter-2.9.zip.sha 2013-01-27 17:28 63 [ ] apache-jmeter-3.0.tgz 2016-05-17 18:34 43M [TXT] apache-jmeter-3.0.tgz.asc 2016-05-17 18:34 819 [ ] apache-jmeter-3.0.tgz.md5 2016-05-17 18:34 55 [ ] apache-jmeter-3.0.tgz.sha 2016-05-17 18:34 63 [ ] apache-jmeter-3.0.zip 2016-05-17 18:34 46M [TXT] apache-jmeter-3.0.zip.asc 2016-05-17 18:34 819 [ ] apache-jmeter-3.0.zip.md5 2016-05-17 18:34 55 [ ] apache-jmeter-3.0.zip.sha 2016-05-17 18:34 63 [ ] apache-jmeter-3.1.tgz 2016-11-19 22:49 45M [TXT] apache-jmeter-3.1.tgz.asc 2016-11-19 22:49 801 [ ] apache-jmeter-3.1.tgz.md5 2016-11-19 22:49 55 [ ] apache-jmeter-3.1.tgz.sha 2016-11-19 22:49 63 [ ] apache-jmeter-3.1.zip 2016-11-19 22:49 48M [TXT] apache-jmeter-3.1.zip.asc 2016-11-19 22:49 801 [ ] apache-jmeter-3.1.zip.md5 2016-11-19 22:49 55 [ ] apache-jmeter-3.1.zip.sha 2016-11-19 22:49 63 [ ] apache-jmeter-3.2.tgz 2017-04-13 18:07 48M [TXT] apache-jmeter-3.2.tgz.asc 2017-04-13 18:07 833 [ ] apache-jmeter-3.2.tgz.md5 2017-04-13 18:07 55 [ ] apache-jmeter-3.2.tgz.sha 2017-04-13 18:07 63 [ ] apache-jmeter-3.2.zip 2017-04-13 18:07 51M [TXT] apache-jmeter-3.2.zip.asc 2017-04-13 18:07 833 [ ] apache-jmeter-3.2.zip.md5 2017-04-13 18:07 55 [ ] apache-jmeter-3.2.zip.sha 2017-04-13 18:07 63 [ ] apache-jmeter-3.3.tgz 2017-09-21 06:27 49M [TXT] apache-jmeter-3.3.tgz.asc 2017-09-21 06:27 833 [ ] apache-jmeter-3.3.tgz.md5 2017-09-21 06:27 55 [ ] apache-jmeter-3.3.tgz.sha512 2017-09-21 06:27 151 [ ] apache-jmeter-3.3.zip 2017-09-21 06:27 52M [TXT] apache-jmeter-3.3.zip.asc 2017-09-21 06:27 833 [ ] apache-jmeter-3.3.zip.md5 2017-09-21 06:27 55 [ ] apache-jmeter-3.3.zip.sha512 2017-09-21 06:27 151 [ ] jakarta-jmeter-2.5.1.tgz 2011-10-03 20:43 18M [TXT] jakarta-jmeter-2.5.1.tgz.asc 2011-10-03 20:43 836 [ ] jakarta-jmeter-2.5.1.tgz.md5 2011-10-03 20:43 58 [ ] jakarta-jmeter-2.5.1.tgz.sha 2011-10-03 20:43 66 [ ] jakarta-jmeter-2.5.1.zip 2011-10-03 20:43 20M [TXT] jakarta-jmeter-2.5.1.zip.asc 2011-10-03 20:43 836 [ ] jakarta-jmeter-2.5.1.zip.md5 2011-10-03 20:43 58 [ ] jakarta-jmeter-2.5.1.zip.sha 2011-10-03 20:43 66 ........................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值