自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

為JMeter用戶和測試者準(zhǔn)備的六種Docker鏡像

譯文
開發(fā) 前端
眾所周知,一套好的容器會(huì)像一把瑞士軍刀那樣,有著一整套非常實(shí)用的工具集可供使用。如果您是一名Apache JMeter™和Docker的用戶,那么擁有一套可用于性能測試的Docker鏡像和容器是非常必要的。本文將向您推薦6種可用于性能測試的Docker鏡像。

【51CTO.com快譯】眾所周知,一套好的容器會(huì)像一把瑞士軍刀那樣,有著一整套非常實(shí)用的工具集可供使用。如果您是一名Apache JMeter™和Docker的用戶,那么擁有一套可用于性能測試的Docker鏡像和容器是非常必要的。本文將向您推薦6種可用于性能測試的Docker鏡像。

在開始之前,為了簡化維護(hù)、隔離系統(tǒng)、并提高安全性,請(qǐng)您直接通過Docker來安裝這些工具,而不要將它們安裝到您的計(jì)算機(jī)環(huán)境中。你可以通過鏈接:https://www.blazemeter.com/blog/make-use-of-docker-with-jmeter-learn-how?utm_source=blog&utm_medium=BM_blog&utm_campaign=top-6-docker-images-for-jmeter-users-and-performance-testers,來了解更多如何在本地安裝Docker。

[[249568]]

1. 無GUI的JMeter(https://hub.docker.com/r/vmarrazzo/jmeter/)

JMeter鏡像能夠創(chuàng)建一個(gè)無GUI的JMeter執(zhí)行容器。通過JMeter鏡像,用戶沒必要再去設(shè)置諸如Java虛擬機(jī)和屬性文件的環(huán)境,而只需要專注于創(chuàng)建測試腳本和測試資源(如數(shù)據(jù)文件)便可。

由于去除了各種GUI、文檔和插件(當(dāng)然您可以自行添加),JMeter鏡像顯得十分輕巧,您可以在需要運(yùn)行JMeter時(shí)快速、便捷地使用到它。

我自行開發(fā)了一個(gè)JMeter鏡像,它不但功能豐富,而且靈活地適用于各種JMeter的測試項(xiàng)目:

  • 輕量級(jí) - 基于Alpine Linux(譯者注:是由社區(qū)開發(fā)的、面向安全應(yīng)用的輕量級(jí)Linux發(fā)行版)和OpenJDK,只有94Mb
  • 支持Apache JMeter 4.0 – 這是JMeter的最新版本
  • 插件可擴(kuò)展性 - 您可以動(dòng)態(tài)地通過Docker的卷(volume),向容器的執(zhí)行添加各種插件
  • JMeter命令行 – 由于鏡像并不過濾任何JMeter的命令參數(shù),因此它能夠允許多種運(yùn)行模式
  • 分布式模式 –在分布式模式下,該鏡像可以被用來建立容器集群

下面讓我們來看幾個(gè)例子:

下面示例的命令是操縱一個(gè)容器來執(zhí)行某個(gè)jmx腳本。注意該jmx腳本必須在與容器相同的機(jī)器上被執(zhí)行。在測試完畢后,容器會(huì)停止下來,并在執(zhí)行機(jī)上留下報(bào)告和各種日志文件。 

  1. export timestamp=$(date +%Y%m%d_%H%M%S) && \ 
  2. export volume_path=<where files are on host> && \ 
  3. export jmeter_path=/mnt/jmeter && \ 
  4. docker run \ 
  5.   --volume "${volume_path}":${jmeter_path} \ 
  6.   jmeter \ 
  7.   -n <any sequence of jmeter args> \ 
  8.   -t ${jmeter_path}/<jmx_script> \ 
  9.   -l ${jmeter_path}/tmp/result_${timestamp}.jtl \ 
  10.   -j ${jmeter_path}/tmp/jmeter_${timestamp}.log 

第二命令是執(zhí)行一個(gè)作為客戶端的JMeter容器,以傳遞要執(zhí)行的腳本。其中參數(shù)“-R”傳遞的是JMeter服務(wù)器實(shí)例的IP地址。 

  1. docker run \ 
  2.   --net $TEST_NET --ip $CLIENT_IP \ 
  3.   -v "${volume_path}":${jmeter_path} \ 
  4.   --rm \ 
  5.   jmeter \ 
  6.   -n -X \ 
  7.   -Jclient.rmi.localport=7000 \ 
  8.   -R $(echo $(printf ",%s" "${SERVER_IPS[@]}") | cut -c 2-) \ 
  9.   -t ${jmeter_path}/<jmx_script> \ 
  10.   -l ${jmeter_path}/client/result_${timestamp}.jtl \ 
  11.   -j ${jmeter_path}/client/jmeter_${timestamp}.log 

2. InfluxDB(https://hub.docker.com/_/influxdb/)和Grafana(https://hub.docker.com/r/grafana/grafana/)

InfluxDB和Grafana鏡像都提供了一種開源的、時(shí)序的數(shù)據(jù)庫功能。這兩種功能強(qiáng)大的Web工具能夠收集結(jié)構(gòu)化的數(shù)據(jù),并進(jìn)行分析。它們既可以被放在一起使用,又可以被單獨(dú)使用。

每個(gè)InfluxDB數(shù)據(jù)集都會(huì)包含幾個(gè)由字段集和時(shí)間戳組成的“鍵-值”對(duì)。InfluxDB沒有外部依賴性,卻能提供一個(gè)類似于SQL語言的、內(nèi)置的、以時(shí)間為中心(time-centric)的功能。該組件可以被用于收集JMeter的統(tǒng)計(jì)數(shù)據(jù)。

以下命令是在一個(gè)定制的Docker網(wǎng)絡(luò)中執(zhí)行InfluxDB容器。 

  1. docker run --rm \ 
  2.       --name influxdb \ 
  3.       -dit \ 
  4.       --net $TIME_SERIES_NET \ 
  5.       -e INFLUXDB_DB=db0 \ 
  6.       -e INFLUXDB_ADMIN_ENABLED=true \ 
  7.       -e INFLUXDB_ADMIN_USER=admin \ 
  8.       -e INFLUXDB_ADMIN_PASSWORD=passw0rd \ 
  9.       -e INFLUXDB_USER=grafana \ 
  10.       -e INFLUXDB_USER_PASSWORD=dbpassw0rd \ 
  11.       -v $INFLUXDB_VOLUME:/var/lib/influxdb \ 
  12.       influxdb 
  • --rm 是在完成后自動(dòng)刪除容器,因此在重新啟動(dòng)期間并不會(huì)保留必要的容器信息
  • --name 是正運(yùn)行中的容器名稱,可以在Docker網(wǎng)絡(luò)中被用作域名
  • --dit 使用本地shell在后臺(tái)運(yùn)行容器,也能被諸如遠(yuǎn)程ssh命令行所使用
  • --net 分配一個(gè)由Docker處理的虛擬網(wǎng)絡(luò)
  • -e 向最近創(chuàng)建的容器傳遞環(huán)境變量。我們?cè)诖俗隽巳缦屡渲茫?/li>
  1. INFLUXDB_DB - 本地?cái)?shù)據(jù)庫名稱
  2. INFLUXDB_ADMIN_ENABLED、INFLUXDB_ADMIN_USER和INFLUXDB_ADMIN_PASSWORD – 為admin配置文件配置可用性
  3. INFLUXDB_USER和INFLUXDB_USER_PASSWORD - 配置供Grafana使用的、標(biāo)準(zhǔn)的用戶配置文件
  • -v 在主機(jī)上分配一個(gè)就算容器重啟,也仍然存在的邏輯卷。使用該卷,我們可以為必要的數(shù)據(jù)限制磁盤空間

Grafana則是用于數(shù)據(jù)分析和導(dǎo)出的強(qiáng)大工具。Grafana并不直接連到JMeter,但它可以通過Docker被加到我們的進(jìn)程中。

如下命令可以執(zhí)行Grafana容器: 

  1. docker run --rm \ 
  2.       --name=grafana \ 
  3.       -dit \ 
  4.       --net $TIME_SERIES_NET \ 
  5.       -p 3000:3000 \ 
  6.       -e GF_SECURITY_ADMIN_PASSWORD =adminpassw0rd \ 
  7.       -v $GRAFANA_VOLUME:/var/lib/grafana \ 
  8.       grafana/grafana 
  • --rm 是在完成后自動(dòng)刪除容器,因此在重新啟動(dòng)期間并不會(huì)保留必要的容器信息
  • --name 是正運(yùn)行中的容器名稱,可以在Docker網(wǎng)絡(luò)中被用作域名
  • --dit 使用本地shell在后臺(tái)運(yùn)行容器,也能被諸如遠(yuǎn)程ssh命令行所使用
  • --net 分配一個(gè)由Docker處理的虛擬網(wǎng)絡(luò)
  • -e 傳遞GF_SECURITY_ADMIN_PASSWORD,即Grafana UI的密碼
  • -v 在主機(jī)上分配一個(gè)就算容器重啟,也仍然存在的邏輯卷。使用該卷,我們可以為必要的數(shù)據(jù)限制磁盤空間

當(dāng)該容器運(yùn)行時(shí),我們可以將Grafana的配置作為數(shù)據(jù)源,來分配給InfluxDB執(zhí)行。

后臺(tái)監(jiān)聽器(Backend Listener,請(qǐng)參見:https://jmeter.apache.org/usermanual/component_reference.html#Backend_Listener)負(fù)責(zé)InfluxDB的具體實(shí)施,它可以執(zhí)行與JMeter的集成。所以在測試執(zhí)行JMeter,上傳其統(tǒng)計(jì)信息到InfluxDB時(shí),以及用Grafana完成測試之后,我們可以按需導(dǎo)出各種報(bào)告。

3.Selenium(https://hub.docker.com/u/selenium/)

Selenium鏡像提供了一個(gè)現(xiàn)成的解決方案,以提高自動(dòng)化的Web瀏覽器測試。Selenium雖然沒有獨(dú)立的鏡像,但是它提供了適用于不同運(yùn)行模式的多種鏡像(如:Selenium Hub和Selenium Node)。

這些鏡像可以輕松地與容器化的JMeter相集成,不過需要具備如下兩個(gè)前提條件:

  • 為運(yùn)行中的JMeter安裝 JMeter的WebDriver插件,請(qǐng)參見:https://www.blazemeter.com/blog/mixing-selenium-into-your-load-scenario?utm_source=blog&utm_medium=BM_blog&utm_campaign=top-6-docker-images-for-jmeter-users-and-performance-testers
  • 將JMeter的腳本配置為RemoteWebDriver

如下命令可以快速地創(chuàng)建一個(gè)容器,以供Selenium測試終端(瀏覽器+驅(qū)動(dòng))。在該測試中,由于選擇了Selenium的調(diào)試鏡像,我們可以通過VNC協(xié)議來觀察測試的執(zhí)行。 

  1. docker run \ 
  2.     -d -p ${port4Driver}:4444 -p ${port4VNC}:5900 \ 
  3.     --shm-size=2g \ 
  4.     selenium/standalone-chrome-debug:3.14.0-beryllium 
  5. #### OR  
  6. docker run \ 
  7.     -d -p ${port4Driver}:4444 -p ${port4VNC}:5900 \ 
  8.     --shm-size=2g \ 
  9.     selenium/standalone-firefox-debug:3.14.0-beryllium 

4.Jenkins-CI(https://hub.docker.com/r/jenkins/jenkins/)

Jenkins鏡像通過與現(xiàn)有的、基于Docker的架構(gòu)相集成,以實(shí)現(xiàn)構(gòu)建上的自動(dòng)化。Jenkins鏡像能夠廣泛地被社區(qū)所支持,并定期被更新。Jenkins-CI常被作為服務(wù)器端應(yīng)用運(yùn)行起來,以管理許多不同的任務(wù)。Jenkins-CI可以管理JMeter測試腳本的調(diào)度、執(zhí)行和結(jié)果的歷史信息。

如下命令可運(yùn)行一個(gè)Jenkins-CI容器: 

  1. docker run \ 
  2.   -d \ 
  3.   -v ${jenkins_home}:/var/jenkins_home \ 
  4.   -p 8080:8080 \ 
  5.   jenkins/jenkins:lts 
  • -d 分離模式
  • -v 安裝從主機(jī)處掛接的一個(gè)卷,并在容器重啟時(shí)保留任務(wù)的配置
  • -p 導(dǎo)出Jenkins-CI UI用于監(jiān)聽主機(jī)的端口信息

由于沒有Docker的卷,其配置文件夾在容器停止后將不復(fù)存在。因此為了保存Jenkins-CI的配置數(shù)據(jù)(或是在版本控制工具中進(jìn)行跟蹤),我們需要在容器和主機(jī)之間對(duì)卷進(jìn)行配置。

Jenkins-CI可以通過如下兩種方式來管理JMeter的執(zhí)行:

  • 通過jmeter-performance-plugin,在Jenkins-CI所運(yùn)行的相同容器中執(zhí)行JMeter,具體請(qǐng)參見:https://www.blazemeter.com/blog/how-to-use-the-jenkins-performance-plugin?utm_source=blog&utm_medium=BM_blog&utm_campaign=top-6-docker-images-for-jmeter-users-and-performance-testers
  • 調(diào)用遠(yuǎn)程命令執(zhí)行,以便另一個(gè)容器可以處理JMeter的執(zhí)行

在通過其他工具從同一容器中執(zhí)行JMeter時(shí),您會(huì)碰到的唯一限制便是自己的資源。不過如果您能夠使用一個(gè)額外的容器,則會(huì)簡化資源處理的相對(duì)成本。

5.Taurus(https://hub.docker.com/r/blazemeter/taurus/)

Taurus鏡像運(yùn)行的是開源的Taurus。它自動(dòng)、且恰當(dāng)?shù)匕b了JMeter、Gatling(https://gatling.io/)、Locust.io(https://locust.io/)、Grinder(http://grinder.sourceforge.net/)和Selenium等工具。因此該鏡像包括了所有必要的依賴項(xiàng),同時(shí)能夠定期提供更新與支持,讓用戶能夠?qū)W⒂谧陨淼臏y試。

如下命令可以用來運(yùn)行Taurus。 

  1. docker run \ 
  2.   --rm \ 
  3.   -v ${scripts_directory}:/bzt-configs \ 
  4.   -v ${artifacts_directory}:/tmp/artifacts \ 
  5.   blazemeter/taurus 
  • --rm 在執(zhí)行結(jié)束后刪除容器的數(shù)據(jù)
  • -v(第一個(gè)) 將Taurus腳本卷掛載到主機(jī)上,并共享輸入腳本
  • -v(第二個(gè)) 將Taurus的各個(gè)工件掛載到主機(jī)上,并共享工件的輸出

6.注冊(cè)服務(wù)器(https://docs.docker.com/registry/deploying/)

Docker注冊(cè)服務(wù)器是一個(gè)用于存儲(chǔ)各種鏡像的本地鏡像庫。我們可以用它來集中那些被頻繁使用的Docker鏡像。籍此,您可以快速地搭建自己的工作網(wǎng)絡(luò),并大幅減少在獲取鏡像上所花費(fèi)的時(shí)間。這是一款官方的Docker鏡像,因此它作為標(biāo)準(zhǔn)化的Docker組件被官方支持和文檔化。另外,它的定期更新不會(huì)給項(xiàng)目帶來任何風(fēng)險(xiǎn)。

如下命令可以創(chuàng)建一個(gè)運(yùn)行的容器,以便成為我們工作網(wǎng)絡(luò)中的一個(gè)存儲(chǔ)庫。 

  1. docker run -d --rm \  
  2. -p 5000:5000 \  
  3. -v $REGISTRY_VOLUME:/var/lib/registry \  
  4. --restart=always \  
  5. --name registry \  
  6. registry:2 
  • -p 發(fā)布主機(jī)上的工作端口
  • --rm 在終止時(shí)移除容器的信息
  • -v 將卷與本地機(jī)器相連接,為存儲(chǔ)在Docker鏡像里的數(shù)據(jù)添加一個(gè)配置文件
  • --restart 用于在終止的情況下,更改容器的行為。在我的例子中,我將restart設(shè)為常規(guī)政策
  • --name 容器名

一個(gè)配置好的容器服務(wù)能夠在較短的時(shí)間內(nèi),以推或拉的方式按需提供一臺(tái)存儲(chǔ)服務(wù)器。

如上所述,本文討論了可供JMeter性能測試的一些重要的Docker鏡像。如果您愿意,可以在創(chuàng)建好了自己的JMX文件之后,將其上傳到BlazeMeter(譯者注:是一個(gè)連續(xù)性測試平臺(tái),請(qǐng)參見http://info.blazemeter.com/testing-landing-page2?utm_source=blog&utm_medium=BM_blog&utm_campaign=top-6-docker-images-for-jmeter-users-and-performance-testers),以獲取可擴(kuò)展性、高級(jí)的分析和各種協(xié)作能力。

原文標(biāo)題:Top 6 Docker Images for JMeter Users and Performance Testers,作者:Vincenzo Marrazzo

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:未麗燕 來源: 51CTO.com
相關(guān)推薦

2009-12-30 09:31:03

2022-07-13 14:50:38

聊天機(jī)器人人工智能加密貨幣

2017-04-07 09:00:24

技術(shù)管理物聯(lián)網(wǎng)開發(fā)

2025-02-27 00:00:30

SpringJava方式

2011-06-07 09:36:18

2016-01-15 17:36:29

云計(jì)算云應(yīng)用

2012-10-15 13:26:31

云計(jì)算架構(gòu)

2015-10-12 17:17:50

用戶體驗(yàn)設(shè)計(jì)錯(cuò)誤

2009-02-11 09:46:00

ASON網(wǎng)絡(luò)演進(jìn)

2022-09-06 08:31:30

CIO培訓(xùn)IT

2022-11-18 10:34:35

IT領(lǐng)導(dǎo)者軟技能

2020-08-25 07:00:00

智慧城市服務(wù)技術(shù)

2020-11-25 09:00:00

API工具數(shù)據(jù)

2017-06-26 10:35:58

前端JavaScript繼承方式

2024-01-05 13:25:00

架構(gòu)架構(gòu)模式開發(fā)

2010-10-08 11:13:22

MySQL修改密碼

2022-10-25 12:09:13

2024-11-11 06:20:00

緩存開發(fā)

2022-06-01 23:30:04

漏洞網(wǎng)絡(luò)安全移動(dòng)攻擊

2024-02-26 11:12:33

定時(shí)任務(wù)線程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)