主頁 >  其他 > 性能測驗-JMeter分布式測驗及其詳細步驟

性能測驗-JMeter分布式測驗及其詳細步驟

2023-05-20 08:05:01 其他

性能測驗概要

性能測驗是軟體測驗中的一種,它可以衡量系統的穩定性、擴展性、可靠性、速度和資源使用,它可以發現性能瓶頸,確保能滿足業務需求,很多系統都需要做性能測驗,如Web應用、資料庫和作業系統等,

性能測驗種類非常多,有些概念也很相近:

  • Load Testing
  • Baseline Testing
  • Smoke Testing
  • Stress Testing
  • Soak Testing
  • Endurance Testing
  • Capacity Testing
  • Longevity Testing
  • Peak Testing
  • Spike Testing
  • Volume Testing
  • Capacity Tests
  • Reliability Testing
  • Scalability Testing

性能測驗的工具

同樣,性能測驗的工具也非常多:

  • Apache JMeter
  • HP LoadRunner
  • Gatling
  • Blazemeter
  • k6
  • NeoLoad
  • TestComplete
  • Silk Performer
  • Rational Performance Tester
  • Apica LoadView
  • AppDynamics
  • Dynatrace
  • New Relic

很難說哪個工具是最好的,這取決于你的需求和預算,如果你想要開源易用的,那JMeter是一個不錯的選擇,如果你想要一個商用的工具,不妨試試LoadRunner和NeoLoad,重要的一點是,沒有任何一款工具可以應對所有性能測驗,很多時候我們需要組合使用,

JMeter的分布式測驗

我將在本文詳細介紹JMeter的分布式測驗,我們經常會通過它來做性能測驗,

在分布式測驗角色中,我們需要一個控制節點Controller,還有多個作業節點Workers,如果你想你的請求增加,那可以通過不斷增加作業節點來實作,Controller控制Workers,但它不跑具體的測驗案例,Workers是連接目標系統來做具體測驗的,

整個系統架構大概如下:

Worker可以在不同的服務器上,所以叫分布式,也因此可以利用多臺電腦的資源來模擬足夠的請求,

詳細步驟

我將一步步介紹如何使用JMeter分布式測驗來做性能測驗,大致架構如下:

 Controller我放在Mac上跑,Workers我是通過兩臺Ubuntu服務器來跑,要注意它們的IP是在同一內網上的,目標系統為了省事,我直接請求 Bing, stackoverflow, QQ,

Step 1: 安裝JDK

Apache JMeter是用Java寫的,運行它需要Java運行環境,在Ubuntu安裝如下:

sudo apt install openjdk-11-jdk

Stpe 2: 下載Apache JMeter

去官網的 download page 下載最新的JMeter包apache-jmeter-5.5.zip,然后解壓:

unzip apache-jmeter-5.5.zip

所有節點都需要下載安裝,

Controller的位置如下:

/Users/larry/Software/apache-jmeter-5.5

Workers的位置如下:

home/larry/software/apache-jmeter-5.5

你不必位置和我一樣,我列出來是為了與后面的命令對應上,

Step 3: 準備測驗的JMX檔案

JMeter把所有的測驗資訊都存放在jmx檔案中,打開工具寫測驗案例如下:

然后定義整個測驗怎么跑,這里定義的是使用8個執行緒,60秒的熱身和120秒的持續時長:

檔案我放在這:

$ ls /Users/larry/Software/apache-jmeter-5.5/projects/pkslow
performance-test.jmx

我的案例只是Controller需要這個jmx檔案,Worker是不需要的,它們可以通過RMI來互動,

Step 4: 啟動Workers

要先啟動Workers,以服務器模式來啟動,啟動后不會執行什么測驗,它會等待與它連接的Controller和指令:

  • Worker 1:
$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.171
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.171:41709](local),objID:[-2af2edf6:1882245cfde:-7fff, 1980465993472976097]]]
  • Worker 2:
$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.60
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.60:45337](local),objID:[18489452:1882246a88b:-7fff, 4749047852254882466]]]

注意: 可能會遇到java.rmi.RemoteException,如果你沒指定引數:java.rmi.server.hostname.

$ ./software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true
May 15, 2023 5:43:16 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.1.1:33021](local),objID:[-7155c199:1881ecaf233:-7fff, -6972385484103483700]]]
Server failed to start: java.rmi.RemoteException: Cannot start. ubuntu is a loopback address.
An error occurred: Cannot start. ubuntu is a loopback address.

Step 5: 啟動Controller

所有Workers就位后,就等主帥一聲令下,啟動時要指定jmx檔案,報告生成的位置,還有Worker的IP,如下:

$ cd /Users/larry/Software/apache-jmeter-5.5/

$ ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171,192.168.50.60
Creating summariser <summary>
Created the tree successfully using projects/pkslow/performance-test.jmx
Configuring remote engine: 192.168.50.171
Configuring remote engine: 192.168.50.60
Starting distributed test with remote engines: [192.168.50.171, 192.168.50.60] @ May 16, 2023 10:37:31 PM CST (1684247851079)
Remote engines have been started:[192.168.50.171, 192.168.50.60]
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +      1 in 00:00:02 =    0.7/s Avg:  1260 Min:  1260 Max:  1260 Err:     0 (0.00%) Active: 2 Started: 2 Finished: 0
summary +    111 in 00:02:31 =    0.7/s Avg:  4433 Min:    41 Max: 50474 Err:     4 (3.60%) Active: 15 Started: 16 Finished: 1
summary =    112 in 00:02:33 =    0.7/s Avg:  4405 Min:    41 Max: 50474 Err:     4 (3.57%)
summary +     64 in 00:00:19 =    3.3/s Avg: 25706 Min:    62 Max: 66745 Err:    31 (48.44%) Active: 0 Started: 16 Finished: 16
summary =    176 in 00:02:52 =    1.0/s Avg: 12151 Min:    41 Max: 66745 Err:    35 (19.89%)
Tidying up remote @ May 16, 2023 10:40:24 PM CST (1684248024629)
... end of run

更多資訊可以查看 jmeter.log:

$ tail -f jmeter.log 
2023-05-16 22:40:29,956 INFO o.a.j.r.d.JsonExporter: Found data for consumer statisticsSummary in context
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Creating statistics for overall
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Creating statistics for other transactions
2023-05-16 22:40:29,957 INFO o.a.j.r.d.JsonExporter: Checking output folder
2023-05-16 22:40:29,958 INFO o.a.j.r.d.JsonExporter: Writing statistics JSON to /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports/statistics.json
2023-05-16 22:40:30,006 INFO o.a.j.r.d.ReportGenerator: Exporting data using exporter:'html' of className:'org.apache.jmeter.report.dashboard.HtmlTemplateExporter'
2023-05-16 22:40:30,007 INFO o.a.j.r.d.HtmlTemplateExporter: Will generate dashboard in folder: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports
2023-05-16 22:40:30,142 INFO o.a.j.r.d.HtmlTemplateExporter: Report will be generated in: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports, creating folder structure
2023-05-16 22:40:30,145 INFO o.a.j.r.d.TemplateVisitor: Copying folder from '/Users/larry/Software/apache-jmeter-5.5/bin/report-template' to '/Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports', got message: /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports, found non empty folder with following content [/Users/larry/Software/apache-jmeter-5.5/projects/pkslow/Reports/statistics.json], will be ignored
2023-05-16 22:40:30,472 INFO o.a.j.JMeter: Dashboard generated

Worker收到指令也會開始作業并列印一些簡單的日志:

$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.171
Created remote object: UnicastServerRef2 [liveRef: [endpoint:[192.168.50.171:44621](local),objID:[4d13369d:18824fd059a:-7fff, 2287886479123818682]]]
Starting the test on host 192.168.50.171 @ 2023 May 16 22:37:31 HKT (1684247851980)
Warning: Nashorn engine is planned to be removed from a future JDK release
Finished the test on host 192.168.50.171 @ 2023 May 16 22:40:24 HKT (1684248024679)

Step 6: 結果和報告

整個測驗跑完后,可以找到對應的結果:

$ ls -l /Users/larry/Software/apache-jmeter-5.5/projects/pkslow/
total 72
drwxr-xr-x  6 larry  staff    192 May 16 22:40 Reports
-rw-r--r--  1 larry  staff  23472 May 16 22:40 performance-test.csv
-rw-r--r--  1 larry  staff  10593 May 16 09:50 performance-test.jmx

在Reports目錄下直接打開 index.html

其它提示

改變Worker的埠

Worker的默認埠是1099,但它是可以改變的,有些時候也必須改變,如設定的防火墻,或者需要在同一臺Server啟動多個Worker,具體命令如下:

$ /home/larry/software/apache-jmeter-5.5/bin/jmeter-server -Dserver.rmi.ssl.disable=true -Djava.rmi.server.hostname=192.168.50.60 -Dserver_port=1984

當然,Controller也要同步調整自己的命令:

$ ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984

使用nohup來跑測驗

性能測驗有時需要跑很長時間,建議使用nohup模式來運行:

$ nohup ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test.csv -e -o projects/pkslow/Reports -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984 &
[1] 81248

指定結果時添加時間

這樣很清晰知道是什么時候開始跑的,也避免目錄存在報錯,

$ nohup ./bin/jmeter -n -t projects/pkslow/performance-test.jmx -l projects/pkslow/performance-test."$(date +%F.%T)".csv -e -o projects/pkslow/Reports-"$(date +%F.%T)" -Dserver.rmi.ssl.disable=true -R 192.168.50.171:1984,192.168.50.60:1984 &

不過這樣也要注意定期清理不需要的結果,以免占用硬碟空間,

總結

性能測驗是非常重要的,而Apache JMeter開源又好用,可以在專案中使用起來,

最后:這里有我建立的一個專門交流軟體測驗方面問題的學習群,里面也有很多大公司的技術大牛,很多時候,技術大牛的幾句話就會讓我們醍醐灌頂,少浪費時間,如果想要多跟有經驗的人學習,就找我加入我的軟體測驗交流群,以后有作業的內推機會都相互推薦一下,畢竟我們是關系社會,

 

軟體測驗技術交流群社:786229024 等待你的加入... 大家可以一起探討交流,共同學習軟體測驗技術、面試等軟體測驗方方面面,還會有免費直播課,識訓更多測驗技巧,我們一起進階Python自動化測驗/測驗開發,走向高薪之路,

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552956.html

標籤:其他

上一篇:數字孿生:雙碳目標推動下的汽車動力電池發展

下一篇:返回列表

標籤雲
其他(159386) Python(38156) JavaScript(25439) Java(18078) C(15229) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7202) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4573) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1940) python-3.x(1918) C++(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 性能測驗-JMeter分布式測驗及其詳細步驟

    性能測驗是軟體測驗中的一種,它可以衡量系統的穩定性、擴展性、可靠性、速度和資源使用。它可以發現性能瓶頸,確保能滿足業務需求。很多系統都需要做性能測驗,如Web應用、資料庫和作業系統等。
    性能測驗種類非常多,有些概念也很相近:
    我將在本文詳細介紹JMeter的分布式測驗,我們經常會通過它來做性能測驗。... ......

    uj5u.com 2023-05-20 08:05:01 more
  • 數字孿生:雙碳目標推動下的汽車動力電池發展

    ?據中汽協統計,2022年我國新能源汽車持續爆發式增長,銷量超680萬輛,已連續8年位居世界第一,保持“快車道”發展態勢,引起西方發達國家的高度重視。相當一部分國家以產品全生命周期碳排放為基礎,試圖建立新的國際貿易壁壘:歐盟規定境內新乘用車碳排放不得高于95g/km;出臺了專門針對出口到歐盟的汽車零 ......

    uj5u.com 2023-05-20 08:04:45 more
  • 論文的技術路線流程圖如何繪制?

    本文介紹基于**Visio**軟體繪制**技術路線圖**、**流程圖**、**作業步驟圖**等的方法。 首先打開**Visio**。我們可以直接選擇“**基本框圖**”進行繪制。 ![](https://picturesali.oss-cn-beijing.aliyuncs.com/20230505 ......

    uj5u.com 2023-05-20 08:02:27 more
  • 如何用postman實作介面自動化測驗

    介面正常作業只是最基本的要求,經常要評估介面性能,進行壓力測驗。
    postman進行簡單壓力測驗
    下面是壓測資料源,支持json和csv兩個格式,如果包含有中文,請將檔案編碼改為UTF-8(否則請求中文會亂碼) ......

    uj5u.com 2023-05-20 08:01:58 more
  • 游戲前端作業流程總結

    # 序言 不斷總結完善方法論可以在類似的事物中提供指導和依據,下面是我作為前端游戲程式員對作業流程的經驗總結。考慮比較復雜的情況,據實際情況酌情簡化或者增加細節。本文多是經驗所得,主觀性較強,歡迎討論交流和批評! # 流程 大概流程如圖所示,部分細節在下面說明 ![image](https://im ......

    uj5u.com 2023-05-20 08:01:44 more
  • 天翼云CDN全站加速產品對websocket協議的支持

    HTTP 協議有一個缺陷:通信只能由客戶端發起。這種單向請求的特點,注定了如果服務器有連續的狀態變化,客戶端要獲知就只能使用輪詢的方案。

    輪詢是在特定的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然后由服務器回傳最新的資料給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不... ......

    uj5u.com 2023-05-20 08:01:36 more
  • Vulnhub之DriftingBlues 5靶機詳細測驗程序(得到root shell)

    # DriftingBlues 5 ## 靶機資訊 **名稱**: DriftingBlues: 5 **地址**: ```url https://download.vulnhub.com/driftingblues/driftingblues5_vh.ova ``` ## 識別IP地址 ```sh ......

    uj5u.com 2023-05-20 08:01:30 more
  • 如何進行測驗分析與設計-HTSM啟發式測驗策略模型 | 京東云技術團

    測驗,沒有分析與設計就失去了靈魂; 測驗人員在撰寫用例之前,該如何進行測驗分析與設計呢?上次在《[測驗的底層邏輯](https://my.oschina.net/u/4090830/blog/8575899)》中講到了【輸入輸出測驗模型】,還講到了【2W+1H測驗分析法】,但2W1H分析法是初步的分 ......

    uj5u.com 2023-05-20 08:01:25 more
  • 測驗工程師都是怎么寫測驗用例的?

    很多人不知道寫測驗用例有什么用,而僅僅是像工具人一樣,在每次提測之前,把測驗用例照著需求檔案抄一遍,仿佛像是走個過場。 ......

    uj5u.com 2023-05-20 08:01:09 more
  • 軟體測驗行業面試題...

    最近看到網上流傳著各種面試經驗及面試題,往往都是一大堆技術題目貼上去,但是沒有答案。
    為此,軟體測驗面試匯總小編用業余時間整理了這份軟測常見的面試題及詳細答案,包含測驗技術面試題、開發及環境搭建類面試題以及人力資源方向的面試題,整理完發現足足有37頁! ......

    uj5u.com 2023-05-20 08:00:55 more