chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Docker在JMeter分布式測試中的作用

馬哥Linux運維 ? 來源:cnblogs ? 2024-02-25 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一個JMeter實例可能無法產(chǎn)生足夠的負載來對你的應用程序進行壓力測試。如本網(wǎng)站所示,一個JMeter實例將能夠控制許多其他的遠程JMeter實例,并對你的應用程序產(chǎn)生更大的負載。JMeter使用Java RMI[遠程方法調(diào)用]來與分布式網(wǎng)絡中的對象進行交互。JMeter主站和從站的通信如下圖所示:

efeae98e-d311-11ee-a297-92fbcf53809c.png

我們需要為每個Slave/Server打開2個端口。

Server_port=1099
server.rmi.localport=50000

在客戶機上打開一個端口,讓從機將結(jié)果發(fā)送給主機。

client.rmi.localport=60000

通過在多臺機器上運行JMeter的多個實例作為服務器,我們可以根據(jù)需要產(chǎn)生大量的負載。

f001d234-d311-11ee-a297-92fbcf53809c.png

Docker

docker在這里有什么用?

Docker有點像一個虛擬機。但與虛擬機不同的是,Docker不是創(chuàng)建一個完整的虛擬操作系統(tǒng),而是允許應用程序使用與它們所運行的系統(tǒng)相同的Linux內(nèi)核,只要求應用程序與主機上尚未運行的東西一起運送。這使性能得到了極大的提升,并減少了應用程序的大小

Docker是一個基礎(chǔ)設施的管理者。它能夠?qū)⒁粋€軟件和它的所有依賴物打包成一個容器來運行。你可以將打包成docker鏡像的軟件部署到任何安裝了docker的機器上。它將軟件與硬件分離,因此開發(fā)者可以放心,應用程序?qū)⒃谌魏螜C器上運行,無論該機器是否有任何定制的設置,可能與用于編寫和測試代碼的機器不同。

Docker在JMeter分布式測試中的作用

如果我們看一下上面的設置--要做分布式負載測試--我們需要1個主站和N個從站來產(chǎn)生巨大的負載。每臺JMeter從機都需要安裝特定版本的Java和JMeter。特定的端口應被打開,JMeter服務器應運行,準備并等待主站發(fā)送指令。

手動設置一些機器可能看起來很容易。如果我們要為50臺、100臺、1000臺機器做這件事呢?想象一下,如果我們將來需要在所有的機器上升級JMeter版本,會發(fā)生什么?這就是docker出現(xiàn)的原因。

我們基本上在一個叫做Dockerfile的文件中設置了JMeter分布式測試的整個基礎(chǔ)設施。檢查這些dockerfile,并閱讀注釋以了解每一步的作用。

Dockerfile用于JMeter基礎(chǔ):

在分布式測試中,所有的環(huán)境都要有相同版本的Java、JMeter和插件等。主站和從站之間的唯一區(qū)別是暴露的端口和運行的進程。因此,讓我們創(chuàng)建一個Docker文件,其中有主站和從站的所有共同步驟。讓我們把它稱為jmbase鏡像,我們需要做以下工作來建立我們的基礎(chǔ)鏡像。

我們需要Java8 - 所以讓我們打開jdk-8-jre瘦身版,以保持盡可能小的體積。

我們可能需要一些實用程序,如wget、unzip、telnet等。所以讓我們安裝它們。

我們需要最新版本的JMeter。為版本創(chuàng)建一個變量--這樣以后的維護就會更容易。

添加一個包含所有插件的文件夾。

添加一個包含樣本測試的文件夾。

# Use Java 8 slim JRE
FROM openjdk:8-jre-slim
MAINTAINER TestAutomationGuru

# JMeter version
ARG JMETER_VERSION=3.3

# 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 -xzf apache-jmeter-$JMETER_VERSION.tgz 
      && rm apache-jmeter-$JMETER_VERSION.tgz

# ADD all the plugins
ADD jmeter-plugins/lib /jmeter/apache-jmeter-$JMETER_VERSION/lib

# ADD the sample test
ADD sample-test sample-test

# Set JMeter Home
ENV JMETER_HOME /jmeter/apache-jmeter-$JMETER_VERSION/

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

用于JMeter客戶端/主站的Dockerfile

Master dockerfile應繼承自基礎(chǔ)鏡像,并應暴露60000端口:

# Use vinsdocker base image
FROM vinsdocker/jmbase
MAINTAINER TestAutomationGuru

# Ports to be exposed from the container for JMeter Master
EXPOSE 60000

Dockerfile for JMeter Server / Slave:

服務器docker文件應該從基礎(chǔ)鏡像中繼承,并且應該暴露1099和50000端口。jmeter-server應該正在運行

# Use vinsdocker base image
FROM vinsdocker/jmbase
MAINTAINER TestAutomationGuru

# 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

正如你在上面的Dockerfile中看到的,如果我們需要改變Java/JMeter的版本/端口,我只需要更新dockerfile,Docker會處理剩下的事情。

我已經(jīng)將這些Dockerfile推送到vinsdocker賬戶下的docker hub中。因此,任何人都可以提取這些文件并建立JMeter分布式測試基礎(chǔ)設施。

確保docker已經(jīng)安裝在你的機器上。一旦安裝完畢,剩下的就很容易了。你只需要遵循這里的步驟。
逐一運行以下命令:

sudo docker run -dit --name slave01 vinsdocker/jmserver /bin/bash
sudo docker run -dit --name slave02 vinsdocker/jmserver /bin/bash
sudo docker run -dit --name slave03 vinsdocker/jmserver /bin/bash

Docker會自動提取我上傳的docker鏡像,并為JMeter服務器創(chuàng)建3個容器。如果你需要更多的容器,繼續(xù)執(zhí)行上述命令,只需改變?nèi)萜髅Q即可。

運行下面的命令,為JMeter主服務器創(chuàng)建一個容器

sudo docker run -dit --name master vinsdocker/jmmaster /bin/bash

運行下面的命令可以看到所有正在運行的容器和打開的端口等:

sudo docker ps –a

f0294c56-d311-11ee-a297-92fbcf53809c.png

運行下面的命令來獲得這些容器的IP地址列表:

sudo docker inspect --format '{{ .Name }} => {{ .NetworkSettings.IPAddress }}' $(sudo docker ps -a -q)

f05dbac2-d311-11ee-a297-92fbcf53809c.png

我在docker鏡像中包含了一個運行了30秒的樣本測試,其中有5個并發(fā)用戶,你可以在容器中看到。路徑。/sample-test/sample-test.jmx

如果 - 你需要從主機復制任何文件到docker容器 - 你可以發(fā)出以下命令。例如:我把測試復制到我的JMeter主容器中。這個命令將把我的本地jmeter測試(docker-test.jmx)復制到主容器的這個路徑中:

/jmeter/apache-jmeter-3.3/bin/docker-test.jmx

sudo docker exec -i master sh -c 'cat > /jmeter/apache-jmeter-3.3/bin/docker-test.jmx' < docker-test.jmx

用下面的命令進入容器內(nèi)部,我們可以看到文件是否被成功復制了:

sudo docker exec -it master /bin/bash

讓我們在主服務器上運行測試,看看它是否工作正常[不是在分布式模式下]。Docker容器將能夠運行JMeter測試,因為它擁有運行JMeter測試的所有軟件和依賴:

jmeter -n -t sample-test/sample-test.jmx
Creating summariser 
Created the tree successfully using sample-test/sample-test.jmx
Starting the test @ Thu Dec 21 1759 UTC 2017 (1513876499683)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +      1 in 0001 =    1.5/s Avg:   265 Min:   265 Max:   265 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
summary +    336 in 0029 =   11.4/s Avg:   112 Min:    87 Max:   325 Err:     0 (0.00%) Active: 5 Started: 5 Finished: 0
summary =    337 in 0030 =   11.2/s Avg:   113 Min:    87 Max:   325 Err:     0 (0.00%)
summary +      4 in 0000 =  210.5/s Avg:    97 Min:    93 Max:   109 Err:     0 (0.00%) Active: 0 Started: 5 Finished: 5
summary =    341 in 0030 =   11.3/s Avg:   113 Min:    87 Max:   325 Err:     0 (0.00%)
Tidying up ...    @ Thu Dec 21 1730 UTC 2017 (1513876530127)
... end of run

就這樣了?,F(xiàn)在我們已經(jīng)準備好使用docker容器在分布式中運行我們的測試。我們只需要添加-R[slave01,slave02,slave03]

jmeter -n -t sample-test/sample-test.jmx -R172.17.0.5,172.17.0.6,172.17.0.7
Creating summariser 
Created the tree successfully using sample-test/sample-test.jmx
Configuring remote engine: 172.17.0.5
Configuring remote engine: 172.17.0.6
Configuring remote engine: 172.17.0.7
Starting remote engines
Starting the test @ Thu Dec 21 1748 UTC 2017 (1513875708955)
Remote engines have been started
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary +      4 in 0011 =    0.4/s Avg:   182 Min:    98 Max:   232 Err:     0 (0.00%) Active: 15 Started: 15 Finished: 0
summary +   1021 in 0020 =   51.5/s Avg:   111 Min:    85 Max:   283 Err:     0 (0.00%) Active: 0 Started: 15 Finished: 15
summary =   1025 in 0030 =   33.7/s Avg:   111 Min:    85 Max:   283 Err:     0 (0.00%)
Tidying up remote @ Thu Dec 21 1720 UTC 2017 (1513875740196)
... end of run

如果你已經(jīng)注意到,我們在同一臺主機上創(chuàng)建了所有的容器。也就是說,JMeter和JMeter從機都在同一臺機器上運行。因此,所有的系統(tǒng)資源將被這些容器共享。

f0726f80-d311-11ee-a297-92fbcf53809c.png

總結(jié)
在這篇文章中,我們的目的是使用Docker來創(chuàng)建JMeter分布式測試基礎(chǔ)設施。如果你按照上面的步驟,你就會明白,使用docker創(chuàng)建測試基礎(chǔ)設施是非常容易和快速的。我們把整個基礎(chǔ)設施寫在一個文件中,可以進行版本控制。然后我們從該文件中創(chuàng)建一個實例(容器)。Docker確保該容器具有所有的軟件和依賴性等。你可能會問,在一臺機器上運行多個jmeter服務器實例以產(chǎn)生更多的負載是否可以?不,這是不可以的。這根本沒有幫助。事實上,一個JMeter實例比在同一主機上運行多個JMeter實例能夠產(chǎn)生更多的負載。

那么,為什么我們要使用docker并做這些事呢?正如我上面所說,我們在這里的目的是了解docker在JMeter測試中的作用。當我們使用AWS/Digitalocean這些云計算服務提供商時,我們可以理解docker的真正用途,在那里你可以按需創(chuàng)建任意數(shù)量的虛擬機。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關(guān)注

    關(guān)注

    14

    文章

    10172

    瀏覽量

    91238
  • ip地址
    +關(guān)注

    關(guān)注

    0

    文章

    309

    瀏覽量

    18890
  • 負載測試
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    9668
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    528

    瀏覽量

    14148

原文標題:基于Docker的JMeter分布式壓測

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    分布式軟件系統(tǒng)

    降到最低。負載各處理機之間分擔,可以避免臨界瓶頸。 4、當現(xiàn)有機構(gòu)已存在幾個數(shù)據(jù)庫系統(tǒng),而且實現(xiàn)全局應用的必要性增加時,就可以由這些數(shù)據(jù)庫自下而上構(gòu)成分布式數(shù)據(jù)庫系統(tǒng)。 5、相等規(guī)模的分布
    發(fā)表于 07-22 14:53

    LED分布式恒流原理

    需要恒流,但是電流的大小取決于應用環(huán)境,LED照明智能化發(fā)展是關(guān)鍵,分布式恒流技術(shù)充份預留智能化接口。分布式LED驅(qū)動設計,驅(qū)動回搜、色溫可調(diào)、灰度控制都要變得方便。這是
    發(fā)表于 03-09 16:47

    分布式整流橋測試系統(tǒng)的設計與實現(xiàn)

    分布式整流橋測試系統(tǒng)的設計與實現(xiàn)
    發(fā)表于 08-07 00:20

    分布式能源有哪些優(yōu)勢? 超級電容

    的燃氣輪機、內(nèi)燃機、微型汽輪機發(fā)電、太陽能光伏發(fā)電,以天然氣、氫氣為燃料的燃料電池發(fā)電、生物質(zhì)能發(fā)電、小型風力發(fā)電等都可以分布式能源系統(tǒng)推廣利用。 `
    發(fā)表于 04-27 11:40

    如何設計分布式干擾系統(tǒng)?

    什么是分布式干擾系統(tǒng)?分布式干擾系統(tǒng)是一種綜合化、一體化、小型化、網(wǎng)絡化和智能化系統(tǒng),是將眾多體積小,重量輕,廉價的小功率偵察干擾機裝置易于投放的小型平臺上,撒布接近***擾目標空
    發(fā)表于 08-08 06:57

    docker分布式zabbix安裝流程

    docker安裝分布式zabbix
    發(fā)表于 10-24 07:33

    分布式系統(tǒng)的優(yōu)勢是什么?

    當討論分布式系統(tǒng)時,我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡的、并行的、并發(fā)的和分散的。分布式處理是一個相對較新的領(lǐng)域,所以還沒有‘致的定義。與順序計算相比、并行的、并發(fā)的和
    發(fā)表于 03-31 09:01

    HarmonyOS應用開發(fā)-分布式設計

    設計理念HarmonyOS 是面向未來全場景智慧生活方式的分布式操作系統(tǒng)。對消費者而言,HarmonyOS 將生活場景的各類終端進行能力整合,形成“One Super Device”,以實現(xiàn)
    發(fā)表于 09-22 17:11

    求一種獨特的DCS分布式系統(tǒng)的測試方案

    本文介紹一種獨特的DCS分布式系統(tǒng)的測試方案,對分布一個網(wǎng)絡多臺電腦上的各個系統(tǒng)模塊(每臺電腦運行多個系統(tǒng)模塊)同時
    發(fā)表于 04-26 06:57

    RTX分布式實時仿真系統(tǒng)的應用是什么?

    基于反射內(nèi)存實時局域網(wǎng)的特點是什么?基于反射內(nèi)存卡實時局域網(wǎng)的實現(xiàn)機制RTX分布式實時仿真系統(tǒng)的應用
    發(fā)表于 05-19 06:46

    HDC2021技術(shù)分論壇:如何高效完成HarmonyOS分布式應用測試

    2.0發(fā)布以來,開發(fā)者測試和上架HarmonyOS分布式應用過程遇到很多挑戰(zhàn)和困難??傮w可歸納為以下三點:分布式應用上架
    發(fā)表于 12-13 14:55

    如何高效完成HarmonyOS分布式應用測試

    2.0發(fā)布以來,開發(fā)者測試和上架HarmonyOS分布式應用過程遇到很多挑戰(zhàn)和困難。總體可歸納為以下三點:分布式應用上架
    發(fā)表于 12-13 18:07

    如何使用Jmeter進行分布式測試;檢索日志?

    使用 Jmeter 進行分布式測試;檢索日志
    發(fā)表于 05-10 13:00

    分布式電源對配電網(wǎng)影響

    34節(jié)點配電網(wǎng)算例的說明 研究分布式電源對配電網(wǎng)網(wǎng)損的影響 分布式電源容量對網(wǎng)損的影響 分布式電源位置對網(wǎng)損的影響 分布式電源對配電網(wǎng)電壓支撐作用
    發(fā)表于 01-07 11:27 ?7次下載
    <b class='flag-5'>分布式</b>電源對配電網(wǎng)影響

    分布式系統(tǒng)交通監(jiān)控工程的創(chuàng)新應用案例

    隨著城市化進程的加速和交通流量的不斷增長,交通監(jiān)控工程維護交通秩序、保障交通安全方面發(fā)揮著越來越重要的作用。訊維分布式系統(tǒng)憑借其強大的分布式處理能力和高度的集成性,
    的頭像 發(fā)表于 03-18 16:14 ?1174次閱讀