性能測試工具Jmeter分布式運行

性能測試工具JMeter的分布式執行是一種用于增強壓力測試能力的技術方案,它允許用戶通過多臺機器來共同完成同一個測試計劃的執行。這種方式特別適用于需要模擬成百上千甚至上萬用戶并發訪問的情況,當單臺機器由于硬件資源(如CPU、內存、網絡I/O等)限制無法滿足高并發需求時,分布式執行可以有效地解決這個問題。

分布式執行原理

在JMeter的分布式架構中,通常會有一臺機器作為控制機(Controller或Master),負責管理和協調整個測試過程;其他參與測試的機器則被稱為執行機(Agent或Slave)。

具體來說:

控制機:安裝有JMeter客戶端,并且配置了與所有執行機通信所需的設置。它可以是Windows或Linux系統,但建議使用獨立于執行機之外的機器以避免資源競爭。

執行機:同樣安裝了JMeter軟件,并且根據控制機發送過來的指令執行相應的測試任務。這些機器不需要啟動GUI界面,而是以命令行模式運行,從而減少不必要的資源消耗。

通信機制:控制機和執行機之間通過RMI(Remote Method Invocation)協議進行通信,默認情況下使用端口1099。為了保證安全性和效率,可以在jmeter.properties文件中禁用SSL加密或者自定義端口號。

運行模式如下圖所示:

圖片

Master 端和Slave 端通過RMI(Remote Method Invocation)的模式通信,Master控制場景的配置,執行及結果收集,Slave負責產生負載,把測試結果回傳給Master。

Jmeter分布執行過程大致如下:

1> Slave 端啟動(%JMETER_HOME%/bin/jmeter-server).

2>Master 端啟動執行。Master端解析測試計劃 Hash Tree,從配置文件中讀取Slave 端地址(可以是N個,N>=1),建立連接。例如參數文件,這些文件不會自動發送Slave端的,需要用戶自己存放到Slave端。

3>Slave端連接到Hash Tree 與啟動命令行,運行測試計劃,并把測試結果返回給Master端;每個Slave端上運行的測試計劃完全一樣,例如,在Master端上設置的線程數為100,那么總線程數為100*N,其中N 為Slave的個數。

配置步驟

要實現JMeter的分布式執行,首先需要確保所有涉及的機器都安裝了相同版本的JDK和JMeter,并且正確設置了環境變量。接著按照以下步驟操作:

修改配置文件:在每臺執行機上的bin/jmeter.properties文件中添加如下配置項:

server.rmi.ssl.disable=true // 禁用SSL

server_port=指定端口 // 設置監聽端口,例如1888

server.rmi.localport=指定端口 // 設置本地RMI端口,保持一致

啟動服務:進入JMeter安裝目錄下的bin文件夾,執行jmeter-server.bat(Windows)或./jmeter-server(Linux)命令來啟動遠程服務器實例。

配置控制機:編輯控制機上的bin/jmeter.properties文件,在其中加入所有執行機的信息,格式為remote_hosts=IP地址:端口號,IP地址:端口號...。例如:remote_hosts=192.168.1.102:1888,192.168.1.103:1888。

啟動測試:打開JMeter GUI界面,加載要執行的測試計劃(.jmx文件),然后選擇“運行”->“遠程啟動”,可以選擇單獨啟動某一臺執行機,也可以點擊“遠程全部啟動”讓所有配置好的執行機同時開始工作。

使用SSL

Jmeter從4.0版本以后,RMI的默認傳輸機制將使用SSL,因此我們要配置密鑰和證書。解決方式有兩種,一種是忽略SSL,另外一種方式生成密鑰和證書,然后進行配置。

%JMETER_HOME%/bin/ 目錄下有create-rmi-keystor.bat,create-rmi-keystor.sh 兩個文件分別為windows 系統和Linux系統下生成密鑰證書。

圖片

create-rmi-keystor.bat 支持windows系統生成密鑰和證書

圖片

圖片

Windows系統下生成的證書。

create-rmi-keystor.sh 支持Linux系統生成密鑰和證書。

把生成的證書拷貝到其它待用的機器上,配置不做任何修改,保持默認即可。

啟動Slave端,在Linux系統下運行%JMETER_HOME%/bin/jmeter-server,在windows系統下運行Jmeter-server.bat。默認的監聽端口號1099,如果需要修改,則在jmeter.properties中設置的server_prot=[端口],同時在Master端的Jmeter.properties 文件中設置remote_hosts=server:[端口]。

注意事項

所有機器應該處于同一局域網內,并且關閉防火墻或開放必要的端口以便于通信。

如果使用CSV文件或其他外部數據源進行參數化,則需確保這些文件存在于每個執行機相同路徑下。

為了避免潛在的問題,最好保證所有參與測試的機器擁有相同的JMeter版本及插件配置。

通過上述方法可以成功搭建起一個基于JMeter的分布式壓測環境,這對于評估Web應用或其他服務在大規模并發條件下的表現具有重要意義。此外,隨著技術的發展,一些第三方平臺也提供了對JMeter分布式部署的支持和服務,進一步簡化了這一過程。

閱讀后若有收獲,不吝關注,分享,在看等操作!!!

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

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

相關文章

彌散張量分析開源軟件 DSI Studio 簡體中文漢化版可以下載了

網址: (63條消息) DSIStudio簡體中文漢化版(2022年7月)-算法與數據結構文檔類資源-CSDN文庫

移動云自研云原生數據庫入圍國采!

近日,中央國家機關2024年度事務型數據庫軟件框架協議聯合征集采購項目產品名單正式公布,移動云自主研發的云原生數據庫產品順利入圍。這一成就不僅彰顯了移動云在數據庫領域深耕多年造就的領先技術優勢,更標志著國家權威評審機構對移動云在數…

在vscode中使用R-1

參考我的上一篇博客: https://blog.csdn.net/weixin_62528784/article/details/145092632?spm1001.2014.3001.5501 這篇內容實際上就是上一篇博客的后續承接,既然都在vscode的jupyter中使用R了,實際上其實也能夠直接在vscode中原生使用R的編…

【Block總結】掩碼窗口自注意力 (M-WSA)

摘要 論文鏈接:https://arxiv.org/pdf/2404.07846 論文標題:Transformer-Based Blind-Spot Network for Self-Supervised Image Denoising Masked Window-Based Self-Attention (M-WSA) 是一種新穎的自注意力機制,旨在解決傳統自注意力方法在…

【Linux】統信UOS服務器安裝MySQL8.0(RPM)

目錄 一、下載安裝包 二、安裝MySQL 2.1hive適配 2.2ranger適配 3.2DolphinScheduler適配 一、下載安裝包 官網下載安裝包:MySQL :: MySQL Downloads 選擇社區版本下載 點擊MySQL Community Server 選擇對應系統的MySQL版本號 統信1060a 操作系統對應 redhat8…

小白:react antd 搭建框架關于 RangePicker DatePicker 時間組件使用記錄 2

文章目錄 一、 關于 RangePicker 組件返回的moment 方法示例 一、 關于 RangePicker 組件返回的moment 方法示例 moment方法中日后開發有用的方法如下: form.getFieldsValue().date[0].weeksInWeekYear(),form.getFieldsValue().date[0].zoneName(), form.getFiel…

Jenkins簡單的安裝運行

一、下載 官網下載:https://www.jenkins.io/download/ 清華大學開源軟件鏡像站:https://mirrors.tuna.tsinghua.edu.cn/jenkins/ 官網資料豐富,介紹了各種平臺安裝以及下載。安裝簡單,按照說明來就行。下面我介紹一個非常簡單的…

【CSS】HTML頁面定位CSS - position 屬性 relative 、absolute、fixed 、sticky

目錄 relative 相對定位 absolute 絕對定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四選一) top:距離上面的像素 bottom:距離底部的像素 left:距離左邊的像素…

網絡安全 | WAF防護開通流程與技術原理詳解

關注:CodingTechWork 引言 隨著互聯網安全形勢的日益嚴峻,Web應用防火墻(WAF, Web Application Firewall)逐漸成為網站和應用的標準防護措施。WAF能夠有效識別和防止如SQL注入、跨站腳本攻擊(XSS)、惡意流…

小結:路由器和交換機的指令對比

路由器和交換機的指令有一定的相似性,但也有明顯的區別。以下是兩者指令的對比和主要差異: 相似之處 基本操作 兩者都支持類似的基本管理命令,比如: 進入系統視圖:system-view查看當前配置:display current…

Ubuntu中雙擊自動運行shell腳本

方法1: 修改文件雙擊反應 參考: https://blog.csdn.net/miffywm/article/details/103382405 chmod x test.sh鼠標選中待執行文件,在窗口左上角edit菜單中選擇preference設計雙擊執行快捷鍵,如下圖: 方法2: 設置一個應用 參考: https://blo…

從0開始學習搭網站的第一天

前言,以下內容學習自mdn社區,感興趣的朋友可以直接去看原文章web技術 目錄 web機制互聯網是怎么運作的網站服務器是什么什么是URL?什么是web服務器?什么是域名什么是超鏈接什么是網頁DOMgoole瀏覽器開發者工具 web機制 互聯網是怎…

java小灶課詳解:關于char和string的區別和對應的詳細操作

char和string的區別與操作詳解 在編程語言中,char和string是用于處理字符和字符串的兩種重要數據類型。它們在存儲、操作和應用場景上存在顯著差異。本文將從以下幾個方面詳細解析兩者的區別及常見操作。 1. 基本定義與存儲差異 char: 定義:…

黑馬linux筆記(03)在Linux上部署各類軟件 MySQL5.7/8.0 Tomcat(JDK) Nginx RabbitMQ

文章目錄 實戰章節:在Linux上部署各類軟件tar -zxvf各個選項的含義 為什么學習各類軟件在Linux上的部署 一 MySQL數據庫管理系統安裝部署【簡單】MySQL5.7版本在CentOS系統安裝MySQL8.0版本在CentOS系統安裝MySQL5.7版本在Ubuntu(WSL環境)系統…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

淺談云計算04 | 云基礎設施機制

探秘云基礎設施機制:云計算的基石 一、云基礎設施 —— 云計算的根基![在這里插入圖片描述](https://i-blog.csdnimg.cn/direct/1fb7ff493d3c4a1a87f539742a4f57a5.png)二、核心機制之網絡:連接云的橋梁(一)虛擬網絡邊界&#xff…

國內主流的Spring微服務方案指南

構建一個完整的 Spring 微服務方案涉及多個關鍵組件的集成與配置,包括服務注冊與發現、配置管理、API 網關、負載均衡、服務調用、熔斷與限流、消息中間件、分布式追蹤、服務網格、容器編排以及數據庫與緩存等。以下將結合前述內容,詳細介紹一個完整的中…

解鎖 JMeter 的 ForEach Controller 高效測試秘籍

各位小伙伴們,今天咱就來嘮嘮 JMeter 里超厲害的 “寶藏工具”——ForEach Controller,它可是能幫咱們在性能測試的江湖里 “大殺四方” 哦! 一、ForEach Controller 是啥 “神器” 想象一下,你手頭有一串神秘鑰匙,每…

【QT】QComboBox:activated信號和currentIndexChanged信號的區別

目錄 1、activated1.1 原型1.2 觸發機制1.3 使用場景1.4 連接信號和槽的方法1.4.1 方式一1.4.2 方式二 2、currentIndexChanged2.1 原型2.2 觸發機制2.3 使用場景2.4 連接信號和槽的方法 1、activated 1.1 原型 [signal] void QComboBox::activated(int index) [signal] void…

PHP 循環控制結構深度剖析:從基礎到實戰應用

PHP 循環控制結構深度剖析:從基礎到實戰應用 PHP提供了多種控制結構,其中循環控制結構是最常見的結構之一。它們使得我們能夠高效地重復執行一段代碼,直到滿足某個條件為止。本文將從PHP循環的基礎知識出發,逐步分析其在實際項目…