我們都知道,jmeter可以做接口測試,也可以用于性能測試,現在企業中性能測試也大多使用jmeter。docker是最近這些年流行起來的容器部署工具,可以建立一個容器,然後把項目放到容器中,就可以建構出一個獨立的運作環境。
是以,有人就想,能否把他們倆弄到一塊來使用?
今天,我就來給大家講講如何結合起來使用。
首先,選擇一個linux機器,安裝docker
用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帶插件)
- 下載下傳【jpgc-jmeter-docker】檔案夾中所有檔案
- 建構本地鏡像:sh build.sh
- 使用建構的鏡像,運作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助攻服務,産生出足夠量的并發使用者數。另外,在助攻機的維護上,也變的更加簡單,因為所有的助攻機容器都是基于相同的鏡像建立,理論上,所有容器都是一樣。
- 下載下傳【slave-jmeter-docker】檔案夾中所有檔案
- 建構本地slave鏡像:sh build.sh
- 建立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)
- 下載下傳【master-jmeter-docker】檔案夾中所有檔案
- 建構本地master鏡像:sh build.sh
- 修改run-master.sh檔案中 --link的數量和名稱
冒号前面為slave容器名稱,冒号後面為自定義别名
- 使用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噢!