Jmeter 壓測實戰保姆級入門教程

1、Jmeter本地安裝

1.1、下載安裝

軟件下載地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/
選擇一個壓縮包下載即可
在這里插入圖片描述
然后解壓縮后進入bin目錄直接執行命令jmeter即可啟動

在這里插入圖片描述

1.2 修改語言

默認是英文的,修改中文,點擊選項-》選擇語言-》簡體中文
在這里插入圖片描述

1.3 必備插件安裝

jmeter內置的常用的插件不是很多,如果要額外安裝其他插件需要先下載一個插件安裝工具的jar包然后放到jmeter的目錄下才能使用插件安裝工具的功能。

  1. 插件安裝工具下載地址

在這里插入圖片描述
2) 下載jar包之后放到 jmeter的 /lib/ext 目錄下,重啟Jmeter即可。

3 打開插件管理。 選項-》 插件管理器
在這里插入圖片描述

  1. 點擊可用插件tab,然后勾選安裝即可
    在這里插入圖片描述

推薦勾選: 帶jpgc相關的插件,可以做梯度增壓

1.4 修改Jmeter的堆內存

由于壓測是通過Jmeter這個Java程序去跑的,所以壓測的性能和能開啟的線程數量都與這個程序本身運行的環境以及配置有關。 一般Jmeter部署在服務器那邊性能會更強。

修改jmeter的 /bin/jmeter 文件 (mac環境),如果是window修改 jmeter.bat 。 修改下圖的這一行就是調整堆內存信息

${HEAP:=“-Xms1g -Xmx8g -XX:MaxMetaspaceSize=656m”}

在這里插入圖片描述
驗證是否修改成功,重啟使用jconsole工具連接Jmeter進程查看jvm信息即可看到是否修改成功。 或者使用jps命令查看進程號然后再jmap命令查看堆內存分配情況。

在這里插入圖片描述

2、 Jmeter操作說明

2.1、測試計劃

默認打開的界面如下, 一份測試計劃就是一份jmx文件,點擊保存就會彈出保存地址。 測試計劃就是包含此次做壓測的所有信息。 支持導入導出。
在這里插入圖片描述

2.2 測試計劃界面介紹

異常信息

  • 右上角那個小三角可以看到jemter的執行信息,如果你的壓測執行不了可以去里面看看一般是報錯了

用戶自定義變量

  • 可以在這里配置壓測的全局變量,這樣我們在使用的時候就不用傳具體的值,傳變量的值即可。 這樣以后要修改的話只需要修改這里的變量值就可以了就不用到處都修改了。
  • 比如我們壓測的接口的域名肯定是都一樣所以一般會提取出來做全局變量。比如下面配置全局變量域名host, 然后使用的時候就直接配 ${host}即可。
    在這里插入圖片描述

2.3、配置元件

默認支持的配置元件列表,主要作用就是配置我們壓測接口的一些參數配置
在這里插入圖片描述

2.3.1、Http請求默認值

操作: 右鍵點擊測試計劃-》 添加-》 配置元件-》 Http請求默認值組件

作用

  • 一般壓測的接口的很多請求參數可能是一致的。 所以這里可以設置壓測接口時的默認請求參數。 這樣就不用每次配壓測接口都去配置,默認會帶上這里配置的請求參數。

在這里插入圖片描述

比如下圖配置默認的http協議,以及默認的域名。 這里的域名配置就使用我們前面配置的全局變量 ${host}
在這里插入圖片描述

2.3.2、HTTP信息頭管理器

操作: 右鍵點擊測試計劃-》 添加-》 配置元件-》 HTTP信息頭管理器

作用

  • Http請求默認值配置元件類似,都是配置壓測接口的請求默認值。 不過這個元件就像其名字一樣配置的是默認的Http請求頭信息,這樣壓測接口就不用再配置Http請求頭信息默認會帶上
  • 比如我們可以配置常用的默認的請求頭Content-TypeCookie 。 尤其是Cookie請求頭 這樣即使是登錄接口也能進行調通。

在這里插入圖片描述

2.3.3、CSV Data Set Config

操作: 右鍵點擊測試計劃-》 添加-》 配置元件-》 CSV Data Set Config

作用

  • 一般用于模擬生成不同的請求參數。 因為一般我們對一個接口進行壓測真實的場景是請求參數是不同的

具體配置如下:

  • 主要是先配置一個csv文件的地址,然后指定列頭變量字段名。 之后再配置壓測接口的時候就可以把使用這些變量字段名。使用格式為: {變量名稱}。 比如下面配置使用格式就是 {userName}.
  • 這樣在請求壓測接口的時候就會來隨機讀取這個csv文件的這個變量對應的列的某一個的值, 一般我們就是通過這個組件去模擬不同的請求參數。

在這里插入圖片描述

2.4、線程組

線程組就是用來模擬并發的數量以及并發的行為。 比如你是要啟動10個并發還是100個并發去壓測接口就是通過這個組件。并且啟動壓測程序其實就是通過啟動我們的線程組的執行壓測。

自帶帶的線程組如下,其中帶gc的使我們添加插件后才有的。 不同的線程組的區別就是設置的并發行為不同

  • 比如有些線程組是一股腦配10個并發然后一直執行10分鐘。

  • 有些線程組是配置先啟動1個并發,每過5秒后再啟動10個并發,當到達100個并發后就執行10分鐘。
    在這里插入圖片描述

2.4.1、普通線程組

操作: 右鍵點擊測試計劃-》 添加-》 線程-》 線程組
作用

  • 下圖就是我們配置一個線程組, 配置了20個并發,然后在5秒內啟動完20個并發,當執行10000伺候就停止壓測。
    在這里插入圖片描述

具體該配置的并發行為可以用下圖來形象的表示。 可以看到一開始是0個并發,然后隨著時間增加不短增加并發,最終在第5秒達到最大并發20,然后就一直20個并發一直執行。
在這里插入圖片描述

2.5、取樣器

如果說線程組就是我們Java的線程池,那么取樣器就相當于我們線程池要執行的Runnable任務。比如我們要壓測哪個接口就可以配置成取樣器。

自帶取樣器如下

  • 操作: 右鍵線程組-》 添加-》取樣器
  • 一般我們用的比較多就是Http請求取樣器,用來壓測接口。
    在這里插入圖片描述

2.5.1、Http請求取樣器

操作: 右鍵線程組-》 添加-》取樣器-》 Http請求
作用: 主要就是用來配置Http接口的信息,包括請求域名,端口,接口路徑、接口參數等等。 有了它就可以發起請求。

在這里插入圖片描述

3、 實戰案例

此處壓測的接口代碼邏輯: 模擬執行時間是500ms

    @GetMappingpublic String getA1(){try {Thread.sleep(500);} catch (InterruptedException e) {throw new RuntimeException(e);}return "33";}

3.1、 壓測接口Hello World

1、在測試計劃下面添加線程組,設置100個并發,持續執行600秒。
在這里插入圖片描述

2、添加壓測的接口
添加http取樣器,并且配置接口信息

在這里插入圖片描述

3、添加接口執行結果監聽器
操作: 右鍵線程組-》添加-》監聽器-》查看結果樹。
這樣我們接口是否調通以及返回結果都可以看到
在這里插入圖片描述

4、添加壓測接口匯總報告
操作: 右鍵線程組-》添加-》監聽器-》匯總報告。
這樣看到這個線程組壓測的統計報告,包括吞吐量TPS、響應時間、是否異常,網絡請求量,執行次數。

在這里插入圖片描述

5、添加吞吐量TPS實時統計圖(可忽略)
操作: 右鍵線程組-》添加-》監聽器-》jp@gc - Transactions per Second。
這樣就可以監測吞吐量的實時變化情況。
在這里插入圖片描述

5、添加響應時間實時統計圖(可忽略)
操作: 右鍵線程組-》添加-》監聽器-》jp@gc - Response Times Over Time
這樣就可以監測接口響應時間的實時變化情況。

在這里插入圖片描述

5、添加激活線程實時統計圖(可忽略)
操作: 右鍵線程組-》添加-》監聽器-》jp@gc - Active Threads Over Time
這樣就可以監測線程組的并發行為,因為線程組的組件有很多,如果不是非常熟悉可能都不知道自己配置的線程組正在模擬什么樣的并發行為。

在這里插入圖片描述

7、啟動線程組執行壓測
操作: 右鍵線程組-》啟動
原理: 線程組會去并發執行線程組下面配置的所有取樣器(這里只添加了一個還可添加多個)

最后我們看下各部分壓測結果:

1、首先是接口執行情況:

  • 都是綠色表示接口調通,并且右側可看到接口響應結果。

在這里插入圖片描述

2、看一下壓測匯總報告統計

可以看到樣本數就是總共請求的數量, 平均值就是平均響應時間(單位是毫秒)結果跟我們接口代碼邏輯還是一致的,最小值和最大值也是接口響應時間。 異常率就是接口調不通(吞不下)的概率。 吞吐量就是每秒能處理168個請求。
在這里插入圖片描述

3、看一下吞吐量變化情況
隨著并發數增加,最終一直維持在180到200的吞吐量之間
在這里插入圖片描述

3、看下響應時間的變化
基本維持在500ms左右
在這里插入圖片描述

3.2、 模擬不同的請求參數

1、新建一個CSV文件,里面放我們不同的請求參數,比如內容為

userId,userName
1,	zhangShan
2,  liSi
3,  xaioming

2、新增CSV 數據文件設置組件
將我們剛才新增的csv文件路徑配到這里,然后配置變量名,并且設置忽略首行(因為我們的csv文件內容首行不是請求參數)
在這里插入圖片描述

3、在Http取樣器里面直接使用變量即可。
請求參數要使用變量地方就用{}包起來就行。
原理就是請求的時候會去隨機讀取該文件的的這個字段的值從而達到模擬不同請求參數的效果
在這里插入圖片描述

3.3、 如何請求要登錄驗證的接口

這個看你們的登錄驗證邏輯,假如我們的登錄信息是放在cookies里面,那么我們就可以添加HTTP信息頭管理器,然后在里面配置cookie請求頭信息。只要把我們的登錄cookies放進去就可以執行成功。

在這里插入圖片描述

缺點就是cookie失效后每次要重新配置,具體還有其他更自動化的解決方法

3.4、 接口如何上傳文件

接口配置那選擇文件上傳, 配置配置具體的配置路徑即可。會去讀取上傳。 然后參數名稱寫死file就行。 然后MIME根據具體來。 一般是application/octet-stream 或者 multipart/form-data即可。
如果要模擬上傳不同的文件,同上面模擬不同請求參數一樣,這里用變量填充代表文件路徑即可。
在這里插入圖片描述

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

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

相關文章

使用Java Servlet生成動態二維碼

文章目錄 引入ZXing庫創建QRCodeServlet部署到Servlet容器拓展功能1. 動態生成二維碼內容2. 調整二維碼尺寸3. 錯誤修正級別4. 日志輸出 結語 🎉歡迎來到Java學習路線專欄~探索Java中的靜態變量與實例變量 ☆* o(≧▽≦)o *☆嗨~我是IT陳寒🍹?博客主頁&…

【追求卓越04】數據結構--棧與隊列

引導 今天我們開始學習棧與隊列的內容,我覺得棧并不難,所以篇幅也就不會那么多了。在虛擬空間中,棧是用戶空間中的一種數據結構,它主要用于保存局部變量。那么問題來了,為什么用棧來保存局部變量,不用別的數…

Spring Boot 3 集成 Knife4j

基礎環境 SpringBoot : 3.0.6 Java: jdk-17.0.5 Maven: 3.6.1依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xs…

Go 語言函數、參數和返回值詳解

函數是一組語句&#xff0c;可以在程序中重復使用。函數不會在頁面加載時自動執行。函數將通過調用函數來執行。 創建函數 要創建&#xff08;通常稱為聲明&#xff09;一個函數&#xff0c;請執行以下操作&#xff1a; 使用 func 關鍵字。指定函數的名稱&#xff0c;后跟括…

Java編程技巧:if-else優化實踐總結歸納

文/朱季謙 說實話&#xff0c;其實我很討厭在代碼里大量使用if-else&#xff0c;一是因為該類代碼執行方式屬于面向過程的&#xff0c;二嘛&#xff0c;則是會顯得代碼過于冗余。這篇筆記&#xff0c;主要記錄一些自己在工作實踐當中針對if-else的優化心得&#xff0c;將會不定…

10年開發工程師總結,8大主流程序員兼職平臺,月入30k不是夢!

今年互聯網行業陸續裁員減薪&#xff0c;許多人怨聲載道的同時也開始另謀出路。而對于程序員更是應該提早做好準備&#xff0c;活躍在兼職接單的最前沿。 我們程序員是一門技術工種&#xff0c;與互聯網其他行業相比薪水會相對高一點&#xff0c;不過錢也不是那么好賺的&#…

C++中類和動態內存分配

new關鍵字 在C中&#xff0c;內存分為棧和堆。棧中的對象生命周期較短&#xff0c;往往在作用域結束后就會銷毀&#xff0c;而堆中的對象生命周期較長&#xff0c;只有當使用delete或者程序結束時才會銷毀。而new則是將我們創建的對象分配到堆中&#xff0c;使對象可以跨作用域…

2023年【廣東省安全員B證第四批(項目負責人)】報名考試及廣東省安全員B證第四批(項目負責人)復審考試

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 廣東省安全員B證第四批&#xff08;項目負責人&#xff09;報名考試是安全生產模擬考試一點通總題庫中生成的一套廣東省安全員B證第四批&#xff08;項目負責人&#xff09;復審考試&#xff0c;安全生產模擬考試一點…

json_to_mask

修改后的json_to_dataset文件&#xff0c;直接復制替換你自己原始的json_to_dataset&#xff0c;建議保存一下原版import argparse import base64 import json import os import os.path as ospimport imgviz import PIL.Imagefrom labelme.logger import logger from labelme …

java:springboot單元測試spring-boot-starter-test

背景 Java的單元測試可以使用多個框架&#xff0c;其中比較流行的包括&#xff1a; JUnit&#xff1a;JUnit是Java單元測試最常用的框架&#xff0c;它提供了一套豐富的API&#xff0c;可以方便地編寫測試用例和測試套件。JUnit 5是JUnit的最新版本&#xff0c;引入了許多新功…

ElMessageBox中的子組件回調關閉函數

父組件中&#xff1a; const closeMessageBox () > {ElMessageBox.close();getList(); };const open () > {ElMessageBox({title: 添加商品,message: h(AddTaxExemption, { onClose: closeMessageBox }),customClass: custom-message-box, showConfirmButton: false,d…

各大電商平臺雙十一“狂飆”,如何選擇商城系統?

今年是“雙十一”的第十五年。作為各大平臺和品牌的全年最重要的營銷節點&#xff0c;品牌們可謂是來勢洶洶&#xff0c;各種促銷活動和優惠力度讓人眼花繚亂。 淘天數據顯示&#xff0c;天貓促銷活動開售當晚&#xff0c;155個品牌開賣成交額突破1億元&#xff1b;首小時內7.1…

str轉wstr的三種方法和從網站獲取json數據到數據隨機提取,返回拼接字符串和動態數組

庫的設置 hv庫 外部包含目錄&#xff1a;…\include\libhv_new\hv; 庫目錄&#xff1a;…\include\libhv_new\lib\x86\Release; 附加依賴項&#xff1a;hv.lib; //Get請求 獲取json數據&#xff0c;然后提取符合 條件的&#xff0c;time值大于自定義變量的值&#xff0c;然后取…

【UE】用樣條線實現測距功能(上)

目錄 效果 步驟 一、創建樣條網格體組件3D模型 二、實現點擊連線功能 三、實現顯示兩點間距離功能 效果 步驟 一、創建樣條網格體組件3D模型 創建一個圓柱模型&#xff0c;這里底面半徑設置為10mm&#xff0c;高度設置為1000mm 注意該模型的坐標軸在如下位置&#xff1…

基于pytest的服務端http請求的自動化測試框架?

1、引言 我有一個朋友是做 Python 自動化測試的。前幾天他告訴我去參加一個大廠面試被刷了。 我問他是有沒有總結被刷下來的原因。他說面試官問了一些 pytest 單元測試框架相關的知識&#xff0c;包括什么插件系統和用力篩選。但是他所在的公司用的技術是基于 unittest 的&am…

Sentinel與SpringBoot整合

好的&#xff0c;以下是一個簡單的Spring Cloud整合Sentinel的代碼示例&#xff1a; 首先&#xff0c;在pom.xml中添加以下依賴&#xff1a; <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel&l…

swift-基礎

print區別 print(1,2,3, separator: "-", terminator: "\n")//表示用-來分割//1-2-3 //terminator表示用\n作為終止符 var a "a",b "b" print(a b) //ab print("\(a)前面是a變量\(b)后面是b變量")變量 var name "…

Win10系統無法登錄Xbox live的四種解決方法

在Win10系統中&#xff0c;用戶可以登錄Xbox live平臺&#xff0c;暢玩自己喜歡的游戲。但是&#xff0c;有用戶卻遇到了無法登錄Xbox live的問題。接下來小編給大家詳細介紹四種簡單的解決方法&#xff0c;解決后用戶在Win10電腦上就能成功登錄上Xbox live平臺。 Win10系統無法…

Linux編程 文件操作 creat open

文件描述符 文件描述符在形式上是一個非負整數。實際上&#xff0c;它是一個索引值&#xff0c;指向內核為每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時&#xff0c;內核向進程返回一個文件描述符。 啟動一個進程之后&#xff0c;…

SquareCTF-2023 Web Writeups

官方wp&#xff1a;CTFtime.org / Square CTF 2023 tasks and writeups sandbox Description&#xff1a; I “made” “a” “python” “sandbox” “”“” nc 184.72.87.9 8008 先nc連上看看&#xff0c;只允許一個單詞&#xff0c;空格之后的直接無效了。 flag就在當…