在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

馬哥Linux運維 ? 來源:cnblogs ? 2024-02-25 09:33 ? 次閱讀

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

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

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

Server_port=1099
server.rmi.localport=50000

在客戶機上打開一個端口,讓從機將結果發送給主機。

client.rmi.localport=60000

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

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

Docker

docker在這里有什么用?

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

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

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

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

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

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

Dockerfile用于JMeter基礎:

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

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

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

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

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

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

# 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應繼承自基礎鏡像,并應暴露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文件應該從基礎鏡像中繼承,并且應該暴露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會處理剩下的事情。

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

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

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服務器創建3個容器。如果你需要更多的容器,繼續執行上述命令,只需改變容器名稱即可。

運行下面的命令,為JMeter主服務器創建一個容器

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個并發用戶,你可以在容器中看到。路徑。/sample-test/sample-test.jmx

如果 - 你需要從主機復制任何文件到docker容器 - 你可以發出以下命令。例如:我把測試復制到我的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

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

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

就這樣了。現在我們已經準備好使用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

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

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

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

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

審核編輯:黃飛

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

    關注

    12

    文章

    9205

    瀏覽量

    85558
  • ip地址
    +關注

    關注

    0

    文章

    303

    瀏覽量

    17069
  • 負載測試
    +關注

    關注

    0

    文章

    18

    瀏覽量

    9475
  • Docker
    +關注

    關注

    0

    文章

    472

    瀏覽量

    11865

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

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

收藏 人收藏

    評論

    相關推薦

    分布式軟件系統

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

    LED分布式恒流原理

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

    分布式整流橋測試系統的設計與實現

    分布式整流橋測試系統的設計與實現
    發表于 08-07 00:20

    分布式能源有哪些優勢? 超級電容

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

    如何設計分布式干擾系統?

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

    docker分布式zabbix安裝流程

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

    分布式系統的優勢是什么?

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

    HarmonyOS應用開發-分布式設計

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

    求一種獨特的DCS分布式系統的測試方案

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

    RTX分布式實時仿真系統的應用是什么?

    基于反射內存實時局域網的特點是什么?基于反射內存卡實時局域網的實現機制RTX分布式實時仿真系統的應用
    發表于 05-19 06:46

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

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

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

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

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

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

    分布式電源對配電網影響

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

    分布式系統交通監控工程的創新應用案例

    隨著城市化進程的加速和交通流量的不斷增長,交通監控工程維護交通秩序、保障交通安全方面發揮著越來越重要的作用。訊維分布式系統憑借其強大的分布式處理能力和高度的集成性,
    的頭像 發表于 03-18 16:14 ?526次閱讀
    主站蜘蛛池模板: 欧美精品网站| 禁漫画羞羞动漫入口| 苦瓜se影院在线视频网站| 手机午夜看片| 免费网站黄色| 操操操天天操| h网站在线看| 性猛交╳xxx乱大交| 很黄很污的视频网站| 在线天堂中文有限公司| 亚洲天堂2013| 日本三级在线| 黄色美女网站免费看| 成年美女| 天天草天天射| asian极品呦女爱爱| 亚洲一区二区三区中文字幕| 好硬好湿好爽再深一点h| 亚洲色图在线播放| 日本在线观看高清不卡免v| 久久国产精品视频| a欧美在线| 美女被免费视频的网站| 免费观看黄色网| 国产美女一级视频| 四虎影院官网| 久久精品人| 五月天婷婷网址| 福利片在线播放| 免费精品99久久国产综合精品| 香蕉视频在线免费播放| 欧美日韩一级视频| 高清国产在线| 久久久夜夜夜| 色噜噜亚洲男人的天堂| 五月激情站| 加勒比色综合| 天天操狠狠操| 亚洲一区二区三区影院| 亚洲a影院| 黑人破乌克兰美女处|