基于Jmeter的分布式壓測環境搭建及簡單壓測實踐

寫在前面

平時在使用Jmeter做壓力測試的過程中,由于單機的并發能力有限,所以常常無法滿足壓力測試的需求。因此,Jmeter還提供了分布式的解決方案。本文是一次利用Jmeter分布式對業務系統登錄接口做的壓力測試的實踐記錄。按照慣例,在正式開始前,先簡單介紹一下本文大綱:

  • Jmeter集合點用法
  • Jmeter命令行參數詳解
  • Jmeter分布式部署方案
  • Jmeter分布式調度原理
  • Jmeter分布式部署過程
  • Jmeter分布式壓測業務系統登錄接口實踐

一、Jmeter集合點用法

集合點是使用Jmeter進行壓力測試中一個繞不開的話題。

集合點通俗地理解就是,例如要模擬100個并發用戶,集合點會將這100個線程集結完畢后,統一釋放,同時對系統進行施壓。Jmeter中可以通過同步定時器 Synchronizing Timer 來完成:

同步定時器中”模擬用戶組的數量“與線程組的線程數量的關系:

1.當模擬用戶組的數量 = 線程組的線程數量

例如數量都是5,那么運行測試,Jmeter會等到5個用戶同時準備好后,并發發起請求;

2.當模擬用戶組的數量 < 線程組的線程數量

① 未設置超時時間

例如:模擬用戶為5,線程數量為8,那么在運行Jmeter后,Jmeter會先同時發起5個請求,剩下3個用戶不足集合點的數量5,由于又沒有設置超時時間,因此達不到集合點的數量要求,Jmeter就會一直處于等待狀態;

② 已設置超時時間

例如:模擬用戶為5,線程數量為8,超時時間設置為3000(以毫秒為單位,即3秒)

那么在運行Jmeter后,Jmeter會先同時發起5個請求,由于剩下3個用戶不足集合點要求的數量5,因此會超時等待3秒鐘,在3秒鐘后再同時發起剩下的3個用戶的請求,共8個用戶;

3.當模擬用戶組的數量 > 線程組的線程數量

① 未設置超時時間

例如:模擬用戶為8,線程數量為5,超時時間為0

由于設置的模擬用戶數量為8,即集合點數量為8,而線程組的總用戶數只有5,因此達不到集合點數量要求,且又沒有設置超時時間,所以Jmeter會一直處于等待狀態,不會發起任何請求,如下圖所示:

② 已設置超時時間

例如:模擬用戶為5,線程數量為8,超時時間設置為3000(以毫秒為單位,即3秒)

由于設置的模擬用戶數量為8,即集合點數量為8,而線程組的總用戶數只有5,因此達不到集合點數量要求,但是設置了超時時間為3秒,所以Jmeter會在3秒后,同時發起5個(用戶)請求,如下圖所示:

二、Jmeter命令行參數詳解

參數作用
-n表示在命令行模式下運行 JMeter
-t指定腳本文件
-R指定從節點(agent)執行測試,多個ip用逗號隔開
-r表示啟動全部agent
-f表示每次都會清空前一次的執行結果,寫入新的結果
-l生成測試結果文件,默認以 jtl 結尾
-e生成測試報告
-o指定生成測告的位置,必須為空
-g指定已存在的jtl結尾的測試文件生成報告

常見用法:


./jmeter.bat -n -t test.jmx # 以命令行方式運行test.jmx腳本./jmeter.bar -n -t test.jmx -l test.jtl # 以命令行方式運行test.jmx腳本,并生成測試結果文件test.jtl./jmeter.bar -n -t test.jmx -f -l test.jtl -e -o report # 以命令行方式運行test.jmx腳本,每次生成結果前先清空test.jtl,同時在report目錄下生成測試報告./jmeter.bar -n -t test.jmx -l test.jtl -R 192.168.1.122 # 指定遠程主機192.168.1.122執行測試

三、Jmeter分布式部署方案

主機IP地址
Master主節點(Windows)192.168.1.131
Slave從節點-1(Linux)192.168.1.121
Slave從節點-2(Linux)192.168.1.122
Slave從節點-3(Linux)192.168.1.123

注意事項:

  • 主節點及各個從節點機器必須提前安裝好Java環境;
  • 主節點及各個從節點的Jmeter版本保持統一;
  • master會在發送測試計劃時將jmx的腳本文件發送到各個從節點,因此,腳本文件不用手動上傳到各個從節點;
  • 但是master不會將外部文件一起發送,所以在測試中用到的CSV等參數化文件,需要把CSV等文件手動上傳到各個從節點,最好都放置在bin目錄下,Jmeter會直接從bin目錄下開始查找;

四、Jmeter分布式調度原理

1.各節點作用
  • 主節點:主要負責管理從節點(負載機)、分配調度任務(腳本分發)、收集測試結果
  • 從節點:執行測試任務,模擬并發請求
2.工作流程

① 主節點負責將測試任務、測試腳本下發給各個從節點;

② 從節點接收到測試任務后,開始驅動各自環境上的Jmeter執行測試任務、模擬并發請求;

③ 從節點執行完成后會將測試結果回傳給主節點;

④ 最后主節點將各個從節點的收集回來的測試結果進行展示;

五、Jmeter分布式部署過程

1.主節點部署

① 編輯主節點jmeter.properties配置文件

  • 第268行,remote_hosts添加從節點主機地址,多個從節點用逗號隔開(注意:不同版本可能存在差異)
  • 第272行,為主節點端口號,如有端口占用,可手動修改
  • 第345行,server.rmi.ssl.disable由false改為true(關閉ssl)

② 主節點啟動jmeter-server服務

Windows環境下直接點擊運行Jmeter的bin目錄下的jmeter-server.bat即可,啟動成功會出現如下提示:

2.從節點部署

① 將Jmeter壓縮包上傳到各個從節點并解壓

從節點均為Linux環境,解壓命令為:

  1. unzip apache-jmeter.zip

② 修改jmeter.properties配置文件

  • 第345行,server.rmi.ssl.disable由false改為true(關閉ssl)

③ 啟動jmeter-server服務

  1. chmod -R +x bin # jmeter-server、jmeter文件都需要執行權限,可以簡單粗暴使用chmod -R參數賦予整個bin目錄執行權限

  2. ./jmeter-server # 啟動jmeter-server服務

啟動成功會出現如下提示:

3.測試主節點與從節點的連通性

可以通過Jmeter工具-運行-遠程啟動,選擇一個從節點;也可以使用命令行-R參數指定一個從節點運行:

如下圖所示,Starting...表示主節點已將任務下發到指定的從節點,從節點開始執行測試任務

4.Jmeter分布式部署常見問題及報錯解決

1)啟動遠程主機,提示“Engine is busy - please try later”

原因:本地或者遠程負載機,未正常關閉

解決:殺掉進程重新啟動(可以觀察主節點及從節點的jmeter-server日志,如果只有Starting,沒有Finished,那么大概率是這臺機器出現了問題)

2)主節點發起測試后未接收到結果數據

如:執行成功后,察看結果樹無數據,主節點及從節點也沒有任何報錯

原因:測試腳本中有參數化,遠程節點上參數化csv文件跟本地測試中設置的目錄不一致,或從節點上缺少csv文件

解決:將csv文件分別上傳一份到各個從節點,csv文件最好設置相對路徑,不要設置絕對路徑,將csv文件存放在bin目錄下

3)Jmeter啟動從節點運行測試報錯“connection refused”

原因:從節點未啟動jmeter-server服務

解決:各個從節點均啟動jmeter-server服務

六、Jmeter壓測業務系統登錄接口實踐

  • 最大并發量:和我們業務系統負責人交流后,得知系統理論上支持6000~7000個左右的用戶同時并發登錄是沒有問題的;
  • 測試的目標:測試出業務系統是否如他提供的數據、支持那么大的用戶并發登錄;
  • 實測數據:3臺負載機,每臺啟動500個線程,共1500個用戶并發,測試結果如下,各個負載機模擬的用戶均登錄正常、無報錯,被測業務系統所在服務器內存、CPU均無大的波動;

  • 升壓:并發用戶數量1500、2100左右,系統響應都比較穩定,當并發用戶量達到每臺1000,一共3000個用戶同時請求時,部分用戶登錄會返回500,總體失敗率在3%左右(預測當并發用戶數達到更大規模4000、5000、6000,失敗的比例還會增大)

小結

  • 以上就是利用Jmeter實現分布式壓測的一次實踐,確切的說應該是初探;
  • 在壓力測試過程中,CPU和內存的動態變化我并沒有做詳細的監控,后續準備借助JMeter+InfluxDB+Grafana的監控組合來可視化監控測試過程;
  • 性能測試是一個龐大的工程和命題,性能測試工具僅僅是實現性能測試的技術手段,會使用性能測試工具不代表就掌握了性能測試;
  • 所有使用性能測試工具的目的都只是為了模擬壓力的發起,在性能測試過程中,工具僅僅起到腳本開發、場景實現、測試執行等作用,而性能測試還包括需求獲取、場景設計、結果分析和調優等諸多環節,最終還是要靠人來實現;
  • 尤其是性能瓶頸分析和調優,除了依賴性能測試結果外,還需要依賴于人的強大的性能測試功底,以及對業務、對系統架構的了解;

最后感謝每一個認真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:

?

這些資料,對于【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37121.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37121.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

仿迪恩城市門戶分類信息網discuz模板

Discuz x3.3模板 仿迪恩城市門戶分類信息網 (GBK) Discuz模板 仿迪恩城市門戶分類信息網(GBK)

【深度學習】卷積神經網絡CNN

李宏毅深度學習筆記 圖像分類 圖像可以描述為三維張量&#xff08;張量可以想成維度大于 2 的矩陣&#xff09;。一張圖像是一個三維的張量&#xff0c;其中一維代表圖像的寬&#xff0c;另外一維代表圖像的高&#xff0c;還有一維代表圖像的通道&#xff08;channel&#xff…

怎樣查看vsphere client 的登錄日志

- 問題摘要&#xff1a; 怎樣查看vsphere client 的登錄日志 - 解決方案/工作方法 1.登錄vsphere client > vc > Monitor > Tasks and Events > Events, 查看日志 2. 查看VC 的websso.log日志 /var/log/vmware/sso/websso.log 3. 可以把websso.log文件拿到本地電…

前端Web開發HTML5+CSS3+移動web視頻教程 Day1 HTML 第一天

鏈接 HTML 介紹 HTML&#xff1a;HyperText Markup Language&#xff0c;超文本標記語言&#xff0c;是一種用于創建網頁的標準標記語言。 HTML 運行在瀏覽器上&#xff0c;由瀏覽器來解析。 對于中文網頁需要使用 <meta charset"utf-8"> 聲明編碼&#xf…

多圖示例:如何呈現論文結果中的各種圖表

本文根據《Journal of the American College of Cardiology》上曾發表的一篇文章《Making Sense of Statistics in Clinical Trial Reports》&#xff0c;來全面而具體地說明臨床試驗論文中&#xff0c;各種類型數據與結果使用圖表的正確展示方法。 本文將著重介紹基線數據、試…

3.Android逆向協議-APP反反編譯及回編譯

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a;微塵網校 上一個內容&#xff1a;2.Android逆向協議-了解常用的逆向工具 在實際應用場景中會閱讀smail代碼&#xff0c;比如調試app&a…

【ai】tx2 nx :ubuntu查找NvInfer.h 路徑及哪個包、查找符號

在Ubuntu系統中,你可以使用多種方法來查找某個頭文件的路徑。這里有幾種常用的方法: 使用find命令: find命令是一個非常強大的工具,可以在文件系統中搜索匹配特定條件的文件。例如,如果你想查找名為stdio.h的頭文件,可以使用以下命令:bash 復制代碼 sudo find / -name …

響應頭缺省xss防御頭(X-XSS-Protection、X-Content-Type-Options)

HTTP X-Content-Type-Options 缺失 Web 服務器對于 HTTP 請求的響應頭缺少 X-Content-Type-Options,這意味著此網站更易遭受跨站腳本攻擊(XSS)。X-Content-Type-Options 響應頭相當于一個提示標志,被服務器用來提示客戶端一定要遵循在 Content-Type 首部中對 MIME 類型 的…

Python頭歌數據聚合

在Python中進行數據聚合通常涉及到使用Pandas庫&#xff0c;它是一個功能強大的數據分析工具。以下是一些基本的步驟和示例代碼&#xff0c;展示如何使用Pandas進行數據聚合&#xff1a; 導入Pandas庫: import pandas as pd讀取數據: 假設您有兩個CSV文件&#xff0c;我們可以使…

嵌入式Linux系統編程 — 4.5 strcmp、strchr 等函數實現字符串比較與查找

目錄 1 字符串比較 1.1 strcmp() 函數 1.2 strncmp() 函數 1.3 示例程序 2 字符串查找 2.1 strchr() 函數 2.2 strrchr() 函數 2.3 strstr() 函數 2.4 strpbrk() 函數 2.5 示例程序 1 字符串比較 strcmp() 和 strncmp() 函數是C語言標準庫中用于比較兩個字符串的函…

經典排序算法詳解

目錄 創作不易&#xff0c;如對您有幫助&#xff0c;還望一鍵三連&#xff0c;謝謝&#xff01; 前言 學習目標&#xff1a; 直接插入排序 基本思想&#xff1a; 代碼 希爾排序&#xff1a; gap取值 代碼 特性總結 選擇排序 基本思想 代碼 堆排序 思想 代碼 冒…

[CTF]-PWN:mips反匯編工具,ida插件retdec的安裝

IDA是沒有辦法直接按F5來反匯編mips的匯編的&#xff0c;而較為復雜的函數直接看匯編不太現實&#xff0c;所以只能借用插件來反匯編 先配置環境&#xff0c;下載python3.4以上的版本&#xff0c;并將其加入到環境變量中 下載retdec 地址&#xff1a;Release v1.0-ida80 ava…

蘋果開發者證書申請流程

蘋果開發者證書申請流程&#xff1a; 1.Certificates 后面加號 2.iOS Distribution (App Store and Ad Hoc) 點擊continue 3.選擇Upload a Certificate Signing Request To manually generate a Certificate, you need a Certificate Signing Request (CSR…

Unity關于Addressables.Release釋放資源內存問題

前言 最近在編寫基于Addressables的資源管理器&#xff0c;對于資源釋放模塊配合MemoryProfiler進行了測試&#xff0c;下面總結下測試Addressables.Release的結論。 總結 使用Addressables.Release釋放資源時&#xff0c;通過MemoryProfiler檢查內存信息發現加載的內容還在…

多租戶與低代碼開發的應用:解鎖企業數字化轉型的無限可能

在數字化轉型的浪潮中&#xff0c;多租戶與低代碼開發已經成為推動企業快速、靈活、安全地構建和部署應用的關鍵技術。本文將深入探討這兩種技術的結合如何為企業帶來前所未有的變革和機遇。 多租戶架構&#xff1a;資源共享與隔離的藝術 多租戶架構&#xff0c;是一種高級的軟…

一文讓你簡單明了的知道云管理平臺的作用

隨著云計算的飛速發展&#xff0c;越來越多的企業實現了上云。因此云管理平臺也在云計算環境中扮演著至關重要的角色&#xff0c;在企業上云后充分發揮作用。今天我們小編就來為大家簡單講解一下云管平臺的作用。 一文讓你簡單明了的知道云管理平臺的作用 作用1、提高工作效率…

思考-生涯思考-GPT-5對人們的影響

GPT-5 一年半后發布&#xff1f;對此你有何期待&#xff1f; IT之家6月22日消息&#xff0c;在美國達特茅斯工程學院周四公布的采訪中&#xff0c;OpenAI首席技術官米拉穆拉蒂被問及GPT-5是否會在明年發布&#xff0c;給出了肯定答案并表示將在一年半后發布。此外&#xff0c;…

20240629 每日AI必讀資訊

&#x1f680; Google 深夜突襲&#xff0c;Gemma 2 狂卷 Llama 3 - Gemma2性能超越Llama3&#xff0c;提供9B和27B版本&#xff0c;性能接近70B模型但大小僅為其40% - Gemma2支持高效推理&#xff0c;單個GPU即可實現全精度推理&#xff0c;廣泛的硬件支持 - Gemma2兼容多種…

CMake之嵌套的CMakeLists

文章目錄 前言項目結構節點關系如何嵌套多個cmake示例程序cmake 總結 前言 在現代軟件開發中&#xff0c;CMake 是一個非常重要的工具&#xff0c;它允許開發者編寫可移植的構建腳本來管理項目。對于大型項目&#xff0c;通常會有多個模塊或子項目&#xff0c;這時候就需要用到…

2024年618各城市跨境電商戰況如何?

2024年618各城市 跨境電商戰況如何? 2024 城市“618”跨境戰績&#xff08;部分&#xff09; 2024年“618”期間&#xff0c;全國跨境電商交易額實現2,397.12億元&#xff0c;同比增長8.68%。從跨境商品來看&#xff0c;進口端&#xff0c;嬰童食品、美容美妝、營養保健等商…