JMeter 性能測試實戰筆記

JMeter 性能測試實戰筆記

本文檔是一份詳細的 JMeter 指南,涵蓋了從創建測試計劃、執行測試到解讀性能結果的全過程。

一、創建測試計劃

一個完整的測試計劃是執行性能測試的基礎。下面將分步介紹如何創建一個針對文件上傳接口的測試場景。

第一步:添加線程組 (定義并發用戶)

“線程組”是用來模擬并發用戶的核心元件。它決定了有多少個“虛擬用戶”同時去請求您的服務。

  1. 在左側的樹狀視圖中,用鼠標右鍵點擊 ▲ Test Plan
  2. 在彈出的菜單中,依次選擇 添加 (Add) -> 線程 (Users) -> 線程組 (Thread Group)
  3. 點擊新創建的 線程組,您會在右側看到它的配置選項。請按照如下計劃來填寫:
    • 線程數 (Number of Threads): 20 (模擬20個并發用戶)
    • Ramp-up Period (in seconds): 10 (在10秒內讓這20個用戶全部啟動)
    • 循環次數 (Loop Count): 100 (每個用戶重復請求100次)
    • 也可以設置一段時間
      Image

第二步:添加 HTTP 請求 (定義要測試的接口)

現在我們需要告訴 JMeter,這些虛擬用戶具體要請求哪個接口。

  1. 在左側的樹狀視圖中,右鍵點擊您剛剛創建的 線程組
  2. 依次選擇 添加 (Add) -> 取樣器 (Sampler) -> HTTP 請求 (HTTP Request)
  3. 點擊新創建的 HTTP 請求,在右側面板中進行核心配置:
    • Web 服務器 (Web Server)
      • 服務器名稱或IP (Server Name or IP): localhost
      • 端口號 (Port Number): 8080
    • HTTP 請求 (HTTP Request)
      • 方法 (Method): 選擇 POST
      • 路徑 (Path): /api/convert/JODConverter
      • 重要: 如果要上傳文件,記得勾選 Use multipart/form-data for POST 復選框。
  4. 如果要配置上傳文件:
    • 切換到下方的 Files Upload 標簽頁。
    • 點擊 添加 (Add) 按鈕。
    • 填寫文件信息:
      • 文件路徑 (File Path): 點擊 Browse... 選擇您準備好的測試Word文檔。
      • 參數名稱 (Parameter Name): file (必須和后端接口的 @RequestParam("file") 一致)
      • MIME 類型 (MIME Type): application/vnd.openxmlformats-officedocument.wordprocessingml.document

第三步:添加監聽器 (查看測試結果)

沒有監聽器,我們就看不到任何測試結果。

  1. 再次右鍵點擊 線程組
  2. 依次選擇 添加 (Add) -> 監聽器 (Listener) -> 聚合報告 (Aggregate Report)
    • 這個監聽器會在測試運行時,以表格形式實時匯總和展示平均響應時間、吞吐量、錯誤率等核心性能指標。
  3. (可選,推薦用于調試) 右鍵點擊 線程組 -> 添加 (Add) -> 監聽器 (Listener) -> 查看結果樹 (View Results Tree)
    • 這個監聽器可以看到每一次請求的詳細信息。注意:在正式進行大并發量測試時,請禁用它(右鍵點擊 -> 禁用),因為它會消耗較多內存。

二、執行測試與保存結果

測試計劃創建好后,下一步就是執行它并保存結果以供分析。推薦使用命令行模式執行正式的壓測。

方法一:通過 GUI 保存結果

此方法適用于快速查看和調試,不推薦用于正式壓測。

  1. 在 JMeter 圖形界面中,選中您的 聚合報告 (Aggregate Report) 監聽器。
  2. 在右側的配置面板中,找到 文件名 (Filename) 輸入框。
  3. 點擊 瀏覽 (Browse)... 按鈕,選擇一個路徑并輸入一個文件名,例如 /Users/sunyuan/develop/project/word2pdf/performance_results/jmeter_results.csv。 每次運行測試時,結果會自動追加到這個文件中。

方法二:使用命令行執行壓測(推薦的最佳實踐)

雖然圖形化界面便于設計腳本,但官方強烈建議使用命令行模式來執行真正的壓力測試。這樣做可以避免 GUI 帶來的額外性能開銷,確保測試結果的純凈和準確。

  1. 保存您的 JMeter 測試計劃:

    • 在 JMeter 圖形界面中,點擊 文件 (File) -> 保存測試計劃為 (Save Test Plan as)
    • 將測試計劃保存為一個 .jmx 文件,例如 /Users/sunyuan/develop/project/word2pdf/shell/test_plan.jmx
  2. 通過命令行執行:

    • 打開一個新的終端窗口。
    • 使用以下命令來執行測試。這個命令會自動處理結果文件的保存和后續的 HTML 報告生成。

    Bash

    # 定義變量,方便管理
    BASE_DIR="/Users/sunyuan/develop/project/word2pdf"
    TEST_PLAN="${BASE_DIR}/shell/test_plan.jmx"
    RESULT_FILE="${BASE_DIR}/performance_results/jmeter_results.csv"
    REPORT_DIR="${BASE_DIR}/performance_results/html_report"# 確保結果文件和報告目錄是干凈的 (JMeter要求報告目錄為空)
    rm -f $RESULT_FILE
    rm -rf $REPORT_DIR
    mkdir -p $REPORT_DIR# 執行 JMeter 命令行壓測
    jmeter -n -t $TEST_PLAN -l $RESULT_FILE -e -o $REPORT_DIR
    

    命令參數解析:

    • -n: non-GUI mode,以無圖形界面模式運行。
    • -t <file.jmx>: test plan,指定要運行的測試計劃文件。
    • -l <file.csv>: log file,指定用于記錄測試結果的日志文件。
    • -e: end,表示在測試結束后生成 HTML 報告。
    • -o <directory>: output directory,指定存放 HTML 報告的輸出目錄。此目錄必須為空或不存在

三、結果分析

測試完成后,需要對結果數據進行詳細解讀,以評估系統性能。

聚合報告 (Aggregate Report) 結果解讀

  • Label:是我們測試的請求的標簽或名稱。

  • # Samples (樣本數): 總共完成了 200 次請求。

  • Average (平均響應時間): 所有請求的平均響應時間是 1808 毫秒 (約 1.81 秒)。這是評估服務處理速度最核心、最直觀的指標。

  • Median (中位數): 50% 的用戶響應時間低于 1754 毫秒。比平均值更能抵抗極端值的影響。

  • 90% Line (90百分位): 90% 的請求響應時間都在 2060 毫秒 (2.06 秒) 以內。

  • 95% Line (95百分位): 95% 的請求響應時間都在 2183 毫秒 (2.18 秒) 以內。這是衡量服務穩定性的一個常用指標 (SLI/SLO)。

  • 99% Line (99百分位): 99% 的請求響應時間都在 2420 毫秒 (2.42 秒) 以內,幫助我們了解最慢請求的情況。

  • Min / Maximum (最小/最大響應時間): 最快的一次花費了 1.58 秒,最慢的一次花費了 2.83 秒

  • Error % (錯誤率): 0.00% 是一個完美的指標!說明在當前并發壓力下,服務非常穩定。

  • Throughput (吞吐量): 服務器每秒鐘能成功處理 1.1 個轉換請求。這是衡量服務器處理能力的核心指標,通常也稱為 QPS (Queries Per Second)。

  • Received/Sent KB/sec: 每秒接收和發送的數據量。發送 (Sent) 遠大于接收 (Received),符合上傳大文件的場景。

jmeter_results.csv 文件列名分析

CSV 文件記錄了每一次請求的詳細數據,便于進行更深入的分析。

列名示例值含義
responseCode200HTTP 響應狀態碼。200 代表 OK (成功)
threadNameword2pdf thread group 1-1發出請求的具體虛擬用戶(線程)的名稱
dataTypetext響應數據的類型。
successtrue請求是否成功。錯誤率 (Error %) 就是根據此列計算的。
bytes740響應數據的大小(字節)。成功后只返回小段 JSON,所以值很小。
sentBytes1691146發送數據的大小(字節)。此值很大,代表上傳的 Word 文檔大小。
grpThreads2請求發生時,其所在線程組內的活躍線程數。
allThreads2請求發生時,整個測試計劃中的總活躍線程數。
URLhttp://127.0.0.1:8080/...請求的完整 URL 地址。
Latency1792(重要指標) 從發出請求到接收到響應第一個字節的時間 (ms),主要衡量服務器端處理時間
Connect0建立 TCP 連接的時間 (ms)。通常只有首個請求耗時,后續復用連接,時間為 0。

四、常見問題與技巧

Q: 點擊綠色啟動按鈕時,應該選中哪個元件?

A: 您不需要選中任何特定的元件。

JMeter 的啟動按鈕(綠色的三角箭頭 ?)是針對整個測試計劃 (Test Plan) 生效的。無論您當前在左側的樹狀視圖中選中了哪個元件,當您點擊啟動按鈕時,JMeter 都會從最頂層的 Test Plan 開始,執行其中所有未被禁用的元件。

如果不測試的元件,要禁用

關于啟動和停止的額外提示

  • 啟動 (Start): 綠色的 ? 按鈕。
  • 停止 (Stop): 紅色的 按鈕。這會立即停止所有線程,可能會中斷正在進行的請求。
  • 優雅地停止 (Shutdown): 停止 按鈕旁邊的那個灰色 按鈕。這會允許當前正在執行的請求完成后再停止所有線程,是更推薦的停止方式
  • 清除結果 (Clear All): 工具欄上的掃帚圖標 🧹。點擊它會清除所有監聽器(如 聚合報告查看結果樹)中已有的測試結果,方便您開始一次全新的測試。

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

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

相關文章

圖像處理:第二篇 —— 選擇鏡頭的基礎知識及對圖像處理的影響

一、圖像傳感器的典型應用圖像處理過程大致可分為如下四步&#xff1a;1.拍 攝 按下快門&#xff0c;拍攝圖像2.傳 送 將圖像數據由照相機傳送到控制器。3.處 理 前處理 : 對于圖像數據進行加工&#xff0c;使其特征更加明顯。測算處理 : 根據圖像數據對于損…

Linux 系統文件夾結構及用途說明

Linux 系統采用樹形文件結構&#xff0c;每個目錄都有明確的功能定位&#xff0c;遵循 FHS&#xff08;Filesystem Hierarchy Standard&#xff09; 標準。以下是新安裝系統后主要文件夾的用途&#xff1a;一、根目錄&#xff08;/&#xff09;核心文件夾1. /bin&#xff1a;基…

[spring6: HttpSecurity]-全新寫法

HttpSecurity HttpSecurity 是 Spring Security 中用于配置基于 HTTP 請求的安全策略的核心構建器&#xff0c;支持細粒度控制請求授權、認證、登錄、登出、CSRF、CORS、會話管理等安全功能。 package xyz.idoly.demo;import org.springframework.context.annotation.Bean; imp…

MIPI DSI 轉 1LVDS ,分辨率1920*1080.

一款橋接芯片&#xff0c;它接收 MP DSI 輸入并發送 LVDS 輸出。MlPI DSI 支持至多 4 條通道&#xff0c;每條通道的最大傳輸速率為 1Gbps&#xff0c;總的最大輸入帶寬為 4Gbps&#xff0c;并且還支持 MlPI 定義的 ULPS&#xff08;超低功耗狀態&#xff09;。LVDS 輸出采用 V…

墨者:SQL手工注入漏洞測試(MySQL數據庫)

一、SQL手工注入漏洞測試(MySQL數據庫) 本文以墨者學院靶場為例&#xff0c;演示MySQL數據庫的手工SQL注入全過程。靶場以自己的地址為準&#xff1a;http://124.70.64.48:47777/new_list.php?id1 二、注入原理與流程&#xff08;如下指令去掉了id之前的內容&#xff09; M…

idea打開后project窗口未顯示項目名稱的解決方案

前言 今天上班后&#xff0c;打開了idea發現之前project窗口中的項目都不見了&#xff0c;啥也沒有&#xff0c;見下圖原因 一般為配置文件*.iml 出錯了。 解決方案1 方法1&#xff1a;若知道出錯的具體位置與原因&#xff0c;用文本編輯器打開*.iml文件&#xff0c;找到出錯位…

不一樣的Mysql安裝方式

文章目錄MySQL介紹與安裝MySQL介紹基本安裝下載打開網址點擊點擊選擇LTSwindows選擇zip壓縮包格式&#xff0c;mac OS選擇dmg格式。不需要注冊登陸網站&#xff0c;直接謝謝&#xff0c;繼續下載即可。解壓復制bin路徑配置環境變量搜索點擊環境變量點擊用戶變量的Path 或 系統變…

MyBatis高級應用實戰指南

MyBatis高級應用實例 以下是MyBatis高級應用實例,涵蓋復雜查詢、動態SQL、插件開發、緩存優化等場景,幫助深入掌握MyBatis核心技術。 動態SQL構建 Example 1: 多條件動態查詢 使用<if>和<where>標簽實現條件組合: <select id="findUsers" resu…

Xilinx-FPGA-PCIe-XDMA 驅動內核兼容性問題修復方案

問題1&#xff1a;implicit declaration of function "mmiowb()"解決方法&#xff1a;在 libxdma.c 和 cdev_xvc.c 文件中注釋掉所有 mmiowb () 函數調用問題2&#xff1a; "macro"access_ok"passed 3 arguments, but takes just 2"解決方法&…

ThreadLocal--ThreadLocal介紹

&#x1f9e0; 一、什么是 ThreadLocal&#xff1f; ThreadLocal 是 Java 提供的一種 線程本地變量機制&#xff1b; 每個線程都維護一份自己的副本&#xff1b; 它不用于多個線程共享變量&#xff0c;而是用于每個線程獨立維護自己的變量副本&#xff1b; 常用于&#xff1…

AWS云S3+Glue+EMRonEC2+ReadShift

Amazon S3&#xff08;Amazon Simple Storage Service&#xff09;即亞馬遜簡單存儲服務&#xff0c;是 AWS&#xff08;Amazon Web Services&#xff09;提供的一種對象存儲服務&#xff0c;在大數據領域被廣泛使用。以下是關于它的詳細介紹&#xff1a;基本概念Amazon S3 主要…

OpenLayers 綜合案例-軌跡回放

看過的知識不等于學會。唯有用心總結、系統記錄&#xff0c;并通過溫故知新反復實踐&#xff0c;才能真正掌握一二 作為一名摸爬滾打三年的前端開發&#xff0c;開源社區給了我飯碗&#xff0c;我也將所學的知識體系回饋給大家&#xff0c;助你少走彎路&#xff01; OpenLayers…

語音自動生成PPT、思維導圖、會議紀要、筆記、大綱、導讀等

一、需要用到錄音工具&#xff0c;手機端工具&#xff1a;訊飛聽見二、需要用到的工具通義&#xff1a;https://www.tongyi.com/discover上傳錄音&#xff0c;描述一下&#xff0c;讓直接給生成PPT就行&#xff0c;點生成就可以生成ppt&#xff0c;對PPT進行導出就行 三、除了生…

【MySQL】腳本化快速搭建跨平臺、可定制的MySQL數據庫

冗長的廢話就省略了&#xff0c;大家看到這篇博客&#xff0c;效果如標題所示&#xff0c;我將提供完整的腳本&#xff0c;并用 「保姆級」的詳細步驟&#xff0c;給你提供一個快速搭建跨平臺、可定制的 MySQL環境的解決方案。保證無論你是 Linux 服務器管理員、macOS 開發者&a…

MAC包頭、IP包頭 、UDP包頭中的長度含義是啥?三者之間有啥區別?

以太網幀、IP包及TCP與UDP的報文格式 下面用通俗技術的方式詳細解釋&#xff1a; 1. MAC包頭&#xff08;以太網幀頭&#xff09;中的長度 字段名稱&#xff1a;EtherType/Length位置&#xff1a;以太網幀頭的第13、14字節含義&#xff1a; 如果值小于等于1500&#xff08;0x0…

Multiscale Structure Guided Diffusion for Image Deblurring 論文閱讀

基于多尺度結構引導擴散模型的圖像去模糊 摘要 擴散概率模型&#xff08;Diffusion Probabilistic Models, DPMs&#xff09;最近被用于圖像去模糊&#xff0c;其被表述為一個以模糊輸入為條件的圖像條件生成過程&#xff0c;將高斯噪聲映射到高質量圖像。當在成對的域內數據上…

git 提交時排除一個或多個文件

前言 在提交文件時&#xff0c;總是有一些文件是不需要提交的&#xff0c;比如機器上的配置文件&#xff0c;日志文件等等&#xff0c;所以在提交時就需要排除這些文件&#xff1b; 第一種方案 git add file1 file2 比如我新添加了3個文件&#xff1a; file1.txt file2.txt fil…

OpenCV 入門:基礎圖像操作

在計算機視覺領域&#xff0c;OpenCV 無疑是最受歡迎的開源庫之一。它由 Intel 公司俄羅斯團隊發起&#xff0c;如今已成為處理圖像和視頻的強大工具。本文我會介紹OpenCV 的基礎知識&#xff0c;從圖像的讀寫顯示到實時視頻流處理&#xff0c;邁出計算機視覺的第一步。 目錄 …

大語言模型 LLM 通過 Excel 知識庫 增強日志分析,根因分析能力的技術方案(3):使用云平臺最小外部依賴方案

文章大綱 1 方案總覽(與官方文檔映射) 2 環境準備(一步完成) 3 數據層(零代碼遷移 Excel → BigQuery 或 SQLite) 4 函數聲明(JSON Schema 與官方示例一致) 5 Cloud Function(**最小外部依賴**) 6 客戶端調用(對齊官方 Python 示例) 7 Token 與性能對比(官方計費口…

C++高效實現軌跡規劃、自動泊車、RTS游戲、戰術迂回包抄、空中軌跡、手術機器人、KD樹

C++ 算法匯總 基于C++的城市道路場景 以下是基于C++的城市道路場景中車輛緊急變道軌跡生成的實現方法和示例代碼。內容涵蓋軌跡規劃算法、數學建模及代碼實現,適用于自動駕駛或駕駛輔助系統開發。 基于多項式曲線的軌跡生成 采用五次多項式(Quintic Polynomial)生成平滑…