簡體   English   中英

Jmeter和Docker

[英]Jmeter and Docker

我看到一些博客文章,人們談論JMeter和Docker。 我知道Docker將有助於設置一個包含所有依賴項的容器。 但它們都在同一主機中運行/創建容器。 理想情況下,所有容器都將共享主機資源。 就像在同一主機中運行多個jmeter實例一樣。 生成更多負載沒有幫助。

當主機有12GB RAM時,我認為1個具有10GB堆的JMeter實例可以比在每個容器中運行10個帶有1個jmeter實例的容器產生更多的負載。

在這里運行碼頭工具有什么意義?

制作了一個可以輕松與Jenkins集成的自動解決方案

應該從java8擴展java8並添加JMeter構建。 這個Docker鏡像我將調用jmeter-base:

FROM java:8

RUN mkdir /jmeter \
    && cd /jmeter/ \
    && wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.3.tgz \
    && tar -xvzf apache-jmeter-3.3.tgz \
    && rm apache-jmeter-3.3.tgz

ENV JMETER_HOME /jmeter/apache-jmeter-3.3/

# Add Jmeter to the Path
ENV PATH $JMETER_HOME/bin:$PATH

如果你想使用主從解決方案,這是jmeter主Dockerfile:

FROM jmeter-base

WORKDIR $JMETER_HOME
# Ports to be exposed from the container for JMeter Master
RUN mkdir scripts

EXPOSE 60000

這是jmeter奴隸Dockerfile:

FROM jmeter-base

# Ports to be exposed from the container for 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

現在,使用這兩個圖像,您應該執行一個腳本來執行您應該知道所有從屬IP。 這個腳本完成所有工作:

#!/bin/bash

COUNT=${1-1}

docker build -t jmeter-base jmeter-base
docker-compose build && docker-compose up -d && docker-compose scale master=1 slave=$COUNT

SLAVE_IP=$(docker inspect -f '{{.Name}} {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq) | grep slave | awk -F' ' '{print $2}' | tr '\n' ',' | sed 's/.$//')
WDIR=`docker exec -it master /bin/pwd | tr -d '\r'`
mkdir -p results
for filename in scripts/*.jmx; do
    NAME=$(basename $filename)
    NAME="${NAME%.*}"
    eval "docker cp $filename master:$WDIR/scripts/"
    eval "docker exec -it master /bin/bash -c 'mkdir $NAME && cd $NAME && ../bin/jmeter -n -t ../$filename -R$SLAVE_IP'"
    eval "docker cp master:$WDIR/$NAME results/"
done

docker-compose stop && docker-compose rm -f

我從我的一位朋友的帖子中了解到,我們不應該在同一主機中運行多個docker容器來產生更多負載。

http://www.testautomationguru.com/jmeter-distributed-load-testing-using-docker/

相反,這里使用docker是為了快速設置jmeter環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM