天天看點

用 docker 建立 jmeter 容器, 實作性能測試

作者:程式員月下

我們都知道,jmeter可以做接口測試,也可以用于性能測試,現在企業中性能測試也大多使用jmeter。docker是最近這些年流行起來的容器部署工具,可以建立一個容器,然後把項目放到容器中,就可以建構出一個獨立的運作環境。

是以,有人就想,能否把他們倆弄到一塊來使用?

今天,我就來給大家講講如何結合起來使用。

首先,選擇一個linux機器,安裝docker

用 docker 建立 jmeter 容器, 實作性能測試

用docker建立jmeter容器(普通jmeter)

下載下傳代碼,到linux機器的/opt路徑下

進入base-jmeter-docker檔案夾

執行 sh build.sh, 建構本地jmeter鏡像

預設版本是jmeter5.1.1

待建構成功之後,把用jmeter建立的jmx腳本檔案,上傳到linux機器的base-jmeter-docker路徑下,執行

sh jmeter.sh -n -t YouJMX_file \ 
-l JTL_date +%Y%m%d_%H%M%S.jtl \ 
-j jmeter.log \ 
-e -o Report_date +%Y%m%d_%H%M%S
           
也可以把你的jmx檔案上傳到其他路徑,在運作jmeter.sh指令時,指定jmx檔案路徑

這個指令和jmeter的CLI模式指令是一樣的,cli的相關參數也是可以使用。

建立增強型jmeter容器(jmeter帶插件)

  1. 下載下傳【jpgc-jmeter-docker】檔案夾中所有檔案
  2. 建構本地鏡像:sh build.sh
  3. 使用建構的鏡像,運作jmx檔案
sh jmeter.sh -n -t YouJMX_file \ 
-l YouJTL_date +%Y%m%d_%H%M%S.jtl \ 
-j jmeter.log \ 
-e -o report_date +%Y%m%d_%H%M%S
           

預設jmeter版本為5.1.1

如果想要更改為其他版本,依次修改:Dockerfile、build.sh、jmeter.sh檔案中的版本号5.1.1

注意: 請不要指定為低于5的版本,低于5,生産的html報告可能有問題

在這個版本,改造了HTML報告和引入了jpgc插件,如果你還想要引入其他插件,可以自己打包壓縮到JmeterPlugins-jpgc.zip檔案包中。然後,執行 sh build.sh建構新的鏡像,

建立分布式jmeter容器(slave)

做性能測試,一般都會遇到jmeter不能産生足夠數量的并發使用者數,需要使用分布式來建立足夠數量的并發使用者數,但是,現實中,我們可能又不能獲得足夠數量的電腦。

使用docker建立jmeter的助攻服務,這樣就能實作,理論上一台電腦上建立出任意多個jmeter助攻服務,産生出足夠量的并發使用者數。另外,在助攻機的維護上,也變的更加簡單,因為所有的助攻機容器都是基于相同的鏡像建立,理論上,所有容器都是一樣。

  1. 下載下傳【slave-jmeter-docker】檔案夾中所有檔案
  2. 建構本地slave鏡像:sh build.sh
  3. 建立slave容器
docker run -itd --name slave1 nmb/jmeter-slave:5.1.1 server

# 重複執行時,修改容器名稱name值,則可建立多個slave容器
           

預設jmeter版本為5.1.1

如果想要更改為其他版本,依次修改:Dockerfile、build.sh檔案中的版本号5.1.1

注意:

1、該鏡像中,加入jpgc插件,更改了HTML報告模闆

2、請不要指定為低于5的版本,低于5,生産的html報告可能有問題

3、助攻服務端口 1099, 5000, 因為後面master用link連接配接容器,是以,可以不用映射端口

想要建立多個slave容器,隻需要修改建立容器指令中的指定的容器名稱。

每個助攻服務的端口都是1099和5000,如果直接映射到主控端上,肯定會出現端口沖突的情況,是以,我們用master連接配接link每個slave容器,就不用擔心端口沖突問題了。

建立分布式jmeter容器(master)

  1. 下載下傳【master-jmeter-docker】檔案夾中所有檔案
  2. 建構本地master鏡像:sh build.sh
  3. 修改run-master.sh檔案中 --link的數量和名稱
冒号前面為slave容器名稱,冒号後面為自定義别名
  1. 使用master容器執行分布式腳本
sh run-master.sh -n \ 
-R 助攻機别名(多個時用逗号分隔) \ 
-t YouJMXfile \ 
-l YouJTL_date +%Y%m%d_%H%M%S.jtl \ 
-j jmeter.log \ 
-e -o report_date +%Y%m%d_%H%M%S
           

預設jmeter版本為5.1.1

如果想要更改為其他版本,依次修改:Dockerfile、build.sh檔案中的版本号5.1.1

注意: 請不要指定為低于5的版本,低于5,生産的html報告可能有問題

注意:

  • 該鏡像建構成功後,會帶有jpgc插件,可以執行使用jpgc插件編寫的腳本
  • 該鏡像還對jmeter生産的html報告進行了改造,生産的報告将轉換為中文
  • jmeter分布式,主要和助攻機的jmeter必須一緻,是以,master和slave的jmeter版本務必一緻

好了使用docker來建立jmeter進行性能測試的技術,已經講完了,代碼已經開源到 gitee, 如果你覺得有用,請幫忙點個star噢!

繼續閱讀