目錄
一、下載 Jmeter
二、配置環境變量
三、設置中文語言
四、入門最簡單的高并發性能壓測流程
1. 添加線程組
2. 添加請求
3. 添加監聽器
3.1 添加聚合報告
?3.2 添加結果樹
4. 啟動測試
?2 種啟動方式:
查看結果樹:
聚合報告:
五、其它操作
?1. 清理測試數據
一、下載 Jmeter
Jmeter 下載鏈接
隨便下載一個壓縮包版本
解壓后進入 bin 打開:
- jmeter.sh :Linux 版本的啟動腳本
- jmeter.cmd :Windows 版本的啟動腳本
ApacheJMeter.jar? | JAR文件 | ?JMeter的核心文件?,包含所有類和資源,雙擊可啟動JMeter。 |
?BeanShellAssertion.bshrc? | BeanShell腳本 | ?BeanShell斷言配置?,用于測試過程中執行腳本斷言。 |
?BeanShellFunction.bshrc? | BeanShell腳本 | ?BeanShell函數配置?,定義和使用自定義BeanShell函數。 |
?BeanShellListeners.bshrc? | BeanShell腳本 | ?BeanShell監聽器配置?,用于測試過程中的監聽操作。 |
?BeanShellSampler.bshrc? | BeanShell腳本 | ?BeanShell取樣器配置?,用于測試過程中的取樣操作。 |
?create-rmi-keystore.bat/.sh? | 批處理/腳本文件 | ?創建RMI信任存儲?,用于配置RMI安全。 |
?hc.parameters? | 參數文件 | ?Harmony Class Loader參數?,配置類加載器行為。 |
?heapdump.cmd/.sh? | 命令/腳本文件 | ?生成堆轉儲文件?,用于內存分析。 |
?jaas.conf? | 配置文件 | ?JAAS配置?,配置Java認證和授權服務。 |
?jmeter.bat/.sh? | 批處理/腳本文件 | ?啟動JMeter?,分別適用于Windows和Unix/Linux。 |
?jmeter.log? | 日志文件 | ?記錄JMeter運行日志?,用于問題排查。 |
?jmeter.properties? | 屬性文件 | ?JMeter全局配置?,如語言、線程數等。 |
?jmeter-n.cmd/-n-r.cmd? | 命令文件 | ?非GUI模式運行JMeter?,后者還重定向輸出。 |
?jmeter-server? | 目錄 | ?JMeter服務器配置?,用于分布式測試。 |
?jmeter-server.bat/.sh? | 批處理/腳本文件 | ?啟動JMeter服務器?,分別適用于Windows和Unix/Linux。 |
?krb5.conf? | 配置文件 | ?Kerberos客戶端配置?,用于Kerberos認證。 |
?log4j2.xml? | 日志配置文件 | ?Log4j2配置?,定義日志輸出格式和級別。 |
?mirror-server? | 目錄 | ?鏡像服務器配置?,用于鏡像測試。 |
?reportgenerator.properties? | 屬性文件 | ?報告生成器配置?,定義報告生成參數。 |
?saveservice.properties? | 屬性文件 | ?保存服務配置?,定義測試結果保存格式。 |
?shutdown.cmd/.sh? | 命令/腳本文件 | ?關閉JMeter?,分別適用于Windows和Unix/Linux。 |
?stoptest.cmd/.sh? | 命令/腳本文件 | ?停止JMeter測試?,分別適用于Windows和Unix/Linux。 |
?system.properties? | 屬性文件 | ?系統級配置?,定義JVM參數等。 |
?threaddump.cmd/.sh? | 命令/腳本文件 | ?生成線程轉儲文件?,用于線程分析。 |
?upgrade.properties? | 屬性文件 | ?升級配置?,定義JMeter升級參數。 |
?user.properties? | 屬性文件 | ?用戶級配置?,定義用戶相關參數。 |
?utility.groovy? | Groovy腳本 | ?實用工具腳本?,可能包含自定義函數或工具類。 |
二、配置環境變量
- 在正常情況下,JMeter不需要單獨配置
ApacheJMeter_core.jar
或jorphan.jar
的環境變量即可正常運行測試。 -
即使未設置?
JMETER_HOME
,只要直接運行?jmeter.bat
(Windows)或?jmeter.sh
(Linux/Mac)且 JMeter 目錄結構完整,腳本也能通過相對路徑找到 JAR 包。 -
為了能快速命令方式啟動以及兼容性和避免路徑問題,建議設置?
JMETER_HOME
。
Windows11 直接搜索環境變量:
- 打開環境變量
- 系統變量 ---> 增加 JMETER_HOME ---> 值建議 jmeter主目錄\ Jmeter?版本
- 系統變量 ---> 找到 path 雙擊打開 ---> 增加 %JMETER_HOME%\bin
三、設置中文語言
- Options 選項
- Choose Language 更改語言
- Chinese 中文
四、入門最簡單的高并發性能壓測流程
- 添加線程組
- 添加請求
- 添加監聽樹
- 啟動測試
1. 添加線程組
右擊 TestPlan --> 添加 --> 線程(用戶) --> 線程組
填入測試:
- 線程組:100
- Ramp-Up:10
- 循環次數:10
JMeter 線程組核心參數解釋表
參數名稱 | 含義 | 示例說明 |
---|---|---|
線程數 | 定義測試中要模擬的?最大并發虛擬用戶 (VU) 數量。 | 線程數 = 10 :表示 JMeter 最終會創建并運行 10 個獨立的線程(虛擬用戶),每個用戶都會執行測試計劃中定義的請求。 |
Ramp-Up 時間 (秒) | 定義 JMeter?啟動所有線程 (虛擬用戶) 所需的總時間 (秒)。目的是平滑增加負載,避免瞬間壓力沖擊。 | 線程數 = 10 ,Ramp-Up = 100 ?秒:*?0秒:?啟動第1個用戶。 *?10秒:?啟動第2個用戶 (100秒 / 10用戶 = 10秒/用戶)。 *?20秒:?啟動第3個用戶。 *?... *?90秒:?啟動第10個用戶。 所有10個用戶將在第90秒時全部啟動完畢。 |
循環次數 | 定義?每個線程 (虛擬用戶) 執行其包含的請求 (采樣器) 序列的次數。 | 循環次數 = 5 :* 每個線程(用戶)會從頭到尾完整地執行測試計劃中定義的請求(比如:登錄 -> 瀏覽商品 -> 下單)5次。 * 如果勾選了“永遠”,線程會無限循環執行請求序列,直到手動停止測試、達到設置的測試持續時間或線程被停止(如通過定時器)。 |
?線程組勾線永久:模擬持續并發量用戶請求,常用配置!
2. 添加請求
?右擊線程組 --> 添加 --> 取樣器 --> HTTP 請求
填入參數
- 協議:http
- 服務器名稱/IP:127.0.0.1
- 端口號:8080
- HTTP請求方法:GET
- 請求路徑(必須 / 開頭):/test-thread-2
- 內容編碼(不分大小寫):UTF-8
- 無參
SpringBoot 項目 Test Demo?接口信息
JMeter HTTP 請求配置項詳解表
配置項 | 解釋說明 | 示例/注意事項 |
---|---|---|
名稱 (Name) | 為這個 HTTP 請求采樣器起一個描述性名稱。便于在結果樹、報告等組件中識別不同的請求。 | 首頁訪問 ,用戶登錄 API ,查詢訂單詳情 |
注釋 (Comments) | 可選字段,用于添加關于此請求的額外說明。 | |
協議 (Protocol) | 指定請求使用的應用層協議。 | *?http : 默認值,標準 HTTP。*? https : 加密的 HTTP (SSL/TLS)。*?留空: JMeter 會繼承線程組或 HTTP 請求默認值中設置的協議(如果有)。 注意:?使用? https ?時,JMeter 會自動處理 SSL 握手,但可能需要配置信任庫來處理自簽名證書。 |
服務器名稱或 IP (Server Name or IP) | 指定目標 Web 服務器的域名或 IP 地址。這是構建請求 URL 最核心的部分。 | *?www.example.com *? api.myapp.com *? 192.168.1.100 注意:?不要包含? http:// ?或?https:// ?前綴,也不要在末尾加?/ 。 |
端口號 (Port Number) | 指定目標服務器監聽的網絡端口號。 | *?80 : HTTP 默認端口。*? 443 : HTTPS 默認端口。*? 8080 ,?8443 : 常見的應用服務器 HTTP/HTTPS 端口。*?留空: 如果使用? http ?協議則默認為?80 ,使用?https ?協議則默認為?443 。 |
HTTP 請求 (HTTP Request) | 選擇 HTTP 請求方法 (Verb)。 | *?GET : 獲取資源(參數通常在 URL 后??key=value )。*? POST : 提交數據(數據通常在 Body 中)。*? PUT : 更新資源。*? DELETE : 刪除資源。*? HEAD ,?OPTIONS ,?PATCH ?等。?POST ?最常用,特別是帶表單或 JSON 時。 |
路徑 (Path) | 指定請求的資源路徑 (URI),相對于服務器的根目錄。 | *?/index.html *? /api/v1/login *? /products/search 注意: *?必須以? / ?開頭。* 可以包含路徑參數 (如? /users/{userId} ),但 JMeter 不直接處理占位符,需用變量或硬編碼值替換。 |
內容編碼 (Content encoding) | 指定?HTTP 請求體 (Body)?的字符編碼。主要影響?POST /PUT ?等方法中發送的?Parameters ?或?Body Data 。 | *?utf-8 : 最常用,支持多語言。*? iso-8859-1 *? gbk ?(中文)注意:?如果服務器響應返回亂碼,可能需要檢查響應頭中的? Content-Type ?編碼或使用 JMeter 的后置處理器(如?BeanShell PostProcessor )進行轉碼。?通常保持?utf-8 ?即可。 |
參數 (Parameters) | 用于添加?GET 請求的查詢字符串參數 (URL 后??key=value&key2=value2 )?或?POST 請求的?application/x-www-form-urlencoded ?表單參數。 | *?模式:?名稱=值 ?對。*?GET:?參數會自動附加到 URL 后。 *?POST (x-www-form-urlencoded):?參數會被編碼后放入請求體。 注意: * 勾選? Encode? ?讓 JMeter 自動對參數值進行 URL 編碼。* 勾選? Include Equals? ?確保即使值為空也發送?key= 。?與?Body Data ?互斥! |
消息體數據 (Body Data) | 用于?直接輸入 HTTP 請求體 (Body) 的原始內容。適用于?POST /PUT ?等方法發送?非表單數據,如?JSON ,?XML ,?純文本 。 | *?{"username": "test", "password": "secret"} ?(JSON)*? <request><id>123</id></request> ?(XML)*? This is plain text 注意: *?必須設置正確的? Content-Type ?請求頭(如?application/json )告訴服務器如何解析。*?與? Parameters ?和?Files Upload ?互斥! |
文件上傳 (Files Upload) | 用于模擬?文件上傳?場景 (multipart/form-data )。 | *?文件路徑:?選擇要上傳的本地文件路徑。 *?參數名稱:?服務器端接收文件字段的名稱 (通常是? file ?或?upload )。*?MIME 類型:?指定上傳文件的 MIME 類型 (如? image/png ,?text/plain ,?application/pdf )。注意: * 會自動設置? Content-Type: multipart/form-data ?請求頭。*?與? Parameters ?和?Body Data ?互斥!?JMeter 會在此模式下忽略它們(除非在下面單獨添加額外參數)。 |
3. 添加監聽器
3.1 添加聚合報告
右擊線程組 --> 添加 --> 監聽器 --> 監聽器 --> 聚合報告
?
JMeter 聚合報告 (Aggregate Report) 各統計列詳解表
列名 | 解釋說明 | 重要性/解讀 |
---|---|---|
Label (標簽) | 對應?采樣器 (Sampler) 的名稱。就是你為 HTTP 請求、JDBC 請求等設置的“名稱”。 | 關鍵標識。用于區分不同請求類型的性能數據。確保為每個重要請求設置清晰、唯一的名稱。 |
# Samples (樣本數) | 在測試運行期間,該采樣器總共被執行的次數。即這個請求一共發送了多少次。 | 基礎量度。表示該請求承受的總負載量。結合線程數、循環次數、持續時間理解。樣本數少可能意味著測試配置錯誤(如持續時間太短)或請求本身沒有被正確調用。 |
Average (平均值) ms | 所有?樣本響應時間的算術平均值。單位是毫秒 (ms)。 | 總體趨勢參考。反映請求的“平均”響應速度。注意:?平均值容易受極少數特別長或特別短的響應時間影響,可能掩蓋實際用戶體驗(如大部分用戶很快,但少數極慢請求拉高了平均值)。 |
Median (中位數) ms | 將所有樣本的響應時間從小到大排序,位于最中間的那個值。如果樣本數是偶數,則取中間兩個值的平均值。單位是毫秒 (ms)。 | 更貼近“典型”用戶體驗。表示至少 50% 的請求響應時間小于或等于這個值。相比平均值,中位數對極端值不敏感,更能代表大多數用戶的感受。例如,中位數 200ms 表示一半請求在 200ms 內完成。 |
90% Line (90% 百分位) ms | 將所有樣本的響應時間從小到大排序,90% 的樣本響應時間小于或等于這個值。單位是毫秒 (ms)。 | 關鍵性能指標 (KPI)。也稱為 P90。表示 90% 的用戶體驗在這個時間范圍內。這是評估系統性能滿足?服務水平協議 (SLA)?的常用指標(如 SLA 要求 95% 請求 < 1s,則看 95% Line)。它揭示了尾部延遲 (Tail Latency),比平均值/中位數更能反映“慢請求”的影響。值越接近中位數越好。 |
95% Line (95% 百分位) ms | 將所有樣本的響應時間從小到大排序,95% 的樣本響應時間小于或等于這個值。單位是毫秒 (ms)。 | 更嚴格的 KPI。也稱為 P95。表示 95% 的用戶體驗在這個時間范圍內。對要求更高的場景(如金融交易核心接口)非常重要。關注其與 90% Line 的差距,差距過大可能意味著系統不穩定或存在瓶頸。 |
99% Line (99% 百分位) ms | 將所有樣本的響應時間從小到大排序,99% 的樣本響應時間小于或等于這個值。單位是毫秒 (ms)。 | 揭示最差情況。也稱為 P99。表示 99% 的用戶體驗在這個時間范圍內,只有 1% 的請求比這個慢。用于評估極端情況下的用戶體驗和系統穩定性。這個值過高,即使平均值/90%很低,也會讓那 1% 的用戶感覺非常糟糕,可能影響口碑。 |
Min (最小值) ms | 所有樣本響應時間中的最短時間。單位是毫秒 (ms)。 | 參考值。表示該請求理論上能達到的最快速度。通常由緩存命中或極簡操作導致。單獨看意義不大,需與其他值對比。 |
Max (最大值) ms | 所有樣本響應時間中的最長時間。單位是毫秒 (ms)。 | 揭示問題點。表示該請求遇到的最慢情況。這個值非常高通常是問題的信號(如數據庫死鎖、資源耗盡、網絡中斷、特定請求觸發了慢邏輯)。需要結合日志和監控排查具體原因。 |
Error % (異常率/錯誤率) % | 該采樣器執行失敗的請求占總樣本數的百分比。失敗可能由多種原因引起:HTTP 狀態碼 4xx/5xx、連接超時、響應斷言失敗等。 | 核心健康指標。最重要指標之一!?理想情況下應為 0%。非零表示有請求失敗,直接影響用戶體驗和系統可用性。即使是 0.1% 也需要關注。高錯誤率通常意味著系統存在嚴重問題(代碼缺陷、配置錯誤、資源不足等)。必須分析錯誤類型(查看結果樹、日志)并解決。 |
Throughput (吞吐量) / sec | 單位時間內(每秒)服務器成功處理的該請求的數量。單位通常是?requests per second (請求數/秒)。JMeter 計算方式:Throughput = (樣本數 - 錯誤數) / 測試運行總時長(秒) 。 | 核心性能容量指標。表示系統處理該請求的能力。數值越高越好。是評估系統性能、容量規劃(需要多少服務器支撐預期流量)的關鍵依據。注意:這是該特定請求的吞吐量,不是整個系統的總吞吐量。總吞吐量需要看聚合報告最底部的匯總行或使用其他監聽器(如 Summary Report)。 |
Received KB/sec (接收 KB/秒) | 單位時間內(每秒)JMeter 從服務器接收到的該請求響應數據的總量。單位是千字節每秒 (KB/sec)。 | 網絡消耗指標。反映該請求返回數據的大小和頻率對下行帶寬的壓力。對于返回大量數據(如圖片、文件下載)的請求,這個值會很高。需關注是否可能成為網絡瓶頸。 |
Sent KB/sec (發送 KB/秒) | 單位時間內(每秒)JMeter 向服務器發送的該請求請求數據的總量。單位是千字節每秒 (KB/sec)。 | 網絡消耗指標。反映該請求發送數據的大小和頻率對上行帶寬的壓力。對于上傳文件或提交大量表單數據的請求(POST with large body),這個值會很高。需關注是否可能成為網絡瓶頸。 |
Avg. Bytes (平均字節數) | 每個樣本響應體大小的平均值。單位是字節 (Bytes)。 | 數據量參考。幫助理解單個響應通常返回多少數據。結合吞吐量可以估算網絡流量 |
?3.2 添加結果樹
右擊線程組 --> 添加 --> 監聽器 --> 查看結果樹
?JMeter 查看結果樹 (View Results Tree) 顯示格式詳解表
格式名稱 | 適用數據 | 核心功能與特點 | 典型使用場景 | 注意事項 |
---|---|---|---|---|
Text | 任何文本響應 | *?最原始格式。?直接將響應體作為純文本顯示。 * 對于非文本響應(如圖片),會顯示二進制亂碼或提示。 | * 快速查看原始響應內容。 * 查看非結構化文本。 * 當其他解析器不可用時。 | * 二進制內容(如圖片、PDF)會顯示亂碼。 * 長文本無格式化,可讀性差。 |
RegExp Tester | 任何文本響應 | *?專門用于測試正則表達式。 * 提供一個輸入框輸入正則表達式。 * 高亮顯示匹配到的文本。 * 顯示匹配組結果。 | * 調試和驗證?正則表達式提取器 (Regular Expression Extractor)?的正則表達式。 * 快速測試正則是否能匹配響應內容。 | 僅用于測試正則表達式,不是常規查看響應的格式。 |
Boundary Extractor Tester | 任何文本響應 | *?專門用于測試邊界提取器。 * 提供輸入框設置左邊界和右邊界。 * 高亮顯示根據邊界提取到的文本。 * 顯示提取結果。 | * 調試和驗證?邊界提取器 (Boundary Extractor)?的左右邊界設置。 | 僅用于測試邊界提取器,不是常規查看響應的格式。 |
CSS Selector Tester | HTML 響應 | *?專門用于測試 CSS/JQuery 選擇器。 * 提供一個輸入框輸入 CSS 選擇器表達式。 * 高亮顯示匹配到的 HTML 元素。 * 顯示提取結果(如 text, html, 屬性值)。 | * 調試和驗證?CSS/JQuery 提取器 (CSS/JQuery Extractor)?的選擇器表達式。 | 僅用于測試 CSS/JQuery 選擇器,不是常規查看響應的格式。 |
JSON Path Tester | JSON 響應 | *?專門用于測試 JSON Path 表達式。 * 提供一個輸入框輸入 JSON Path 表達式。 * 高亮顯示或定位匹配的 JSON 節點。 * 顯示提取結果。 | * 調試和驗證?JSON 提取器 (JSON Extractor)?或?JSON Path 斷言?的 JSON Path 表達式。 | 僅用于測試 JSON Path,不是常規查看響應的格式。 |
XPath2 Tester | XML 響應 | *?專門用于測試 XPath 2.0 表達式。 * 提供一個輸入框輸入 XPath 2.0 表達式。 * 高亮顯示或定位匹配的 XML 節點。 * 顯示提取結果。 | * 調試和驗證?XPath2 提取器 (XPath2 Extractor)?或?XPath2 斷言?的 XPath 2.0 表達式。 | 僅用于測試 XPath 2.0,不是常規查看響應的格式。 |
JSON JMESPath Tester | JSON 響應 | *?專門用于測試 JMESPath 表達式。 * 提供一個輸入框輸入 JMESPath 表達式。 * 高亮顯示或定位匹配的 JSON 節點。 * 顯示提取結果。 | * 調試和驗證?JMESPath 提取器 (JMESPath Extractor)?或?JMESPath 斷言?的 JMESPath 表達式。 | 僅用于測試 JMESPath,不是常規查看響應的格式。JMESPath 是 JSON 查詢的更強大語言,功能類似 JSON Path 的超集。 |
XPath Tester | XML 響應 | *?專門用于測試 XPath 1.0 表達式。 * 提供一個輸入框輸入 XPath 1.0 表達式。 * 高亮顯示或定位匹配的 XML 節點。 * 顯示提取結果。 | * 調試和驗證?XPath 提取器 (XPath Extractor)?或?XPath 斷言?的 XPath 1.0 表達式。 | 僅用于測試 XPath 1.0,不是常規查看響應的格式。 |
HTML | HTML 響應 | *?渲染 HTML 視圖。?嘗試像瀏覽器一樣渲染 HTML 頁面。 * 顯示基本的頁面布局和元素。 *?不加載外部資源(圖片、CSS、JS)。 | * 快速檢查頁面渲染的基本結構和內容是否符合預期。 * 查看純 HTML 內容呈現的效果。 | *?渲染非常基礎,不支持現代 CSS/JS,效果遠不如真實瀏覽器。 *?性能消耗大,在壓測中開啟會嚴重影響結果,調試時使用,壓測時務必禁用。 |
HTML Source Formatted | HTML 響應 | *?格式化顯示 HTML 源代碼。 * 對原始 HTML 進行縮進、換行等格式化,提高可讀性。 | *?最常用!?清晰、可讀地查看 HTML 響應的原始源代碼。 * 分析 HTML 結構,查找特定元素或內容。 | 比原始的?Text ?模式更易讀,但仍是源代碼視圖。 |
HTML (download resources) | HTML 響應 | *?渲染 HTML 視圖并嘗試下載資源。?類似?HTML ?模式,但會嘗試下載頁面中引用的圖片、CSS、JS 等資源。*?極其消耗資源且不穩定。 | * 理論上可以更完整地模擬瀏覽器,但實際很少用且強烈不推薦。 | *?性能消耗巨大!?嚴重影響 JMeter 性能和壓測結果。 * 下載過程可能失敗或卡住。 *?強烈建議避免使用此模式,尤其在壓測時絕對禁用。 |
Document | HTML / XML 響應 | *?基于 DOM 的視圖。?將 HTML/XML 解析成文檔對象模型 (DOM) 并以樹形結構展示。 * 可以展開/折疊節點。 * 顯示元素標簽、屬性、文本內容等。 | * 以結構化方式分析 HTML/XML 文檔的層次結構。 * 輔助編寫 XPath 或 CSS 選擇器。 | 比純文本更結構化,但不如源代碼視圖直觀。 |
JSON | JSON 響應 | *?格式化顯示 JSON 數據。 * 對原始 JSON 進行縮進、換行、語法高亮(取決于 JMeter 版本/主題)。 * 可展開/折疊 JSON 對象和數組。 | *?最常用!?清晰、可讀地查看 JSON 響應的結構。 * 快速定位特定字段的值。 * 調試 JSON 接口的必備視圖。 | 極大地提高了 JSON 數據的可讀性和調試效率。 |
XML | XML 響應 | *?格式化顯示 XML 數據。 * 對原始 XML 進行縮進、換行、語法高亮(取決于 JMeter 版本/主題)。 * 可展開/折疊 XML 元素節點。 | *?最常用!?清晰、可讀地查看 XML 響應的結構。 * 快速定位特定元素或屬性。 * 調試 XML 接口的必備視圖。 | 極大地提高了 XML 數據的可讀性和調試效率。 |
4. 啟動測試
?2 種啟動方式:
- 在頂部導航欄圖標下的綠色按鈕即可啟動/停止
- 右擊線程組 --> 啟動 (start)
?注意:
- 這里讓保存現有已配置的信息,可以直接 No 或者 × 掉,但是下次信息無
- 保存配置信息,下次打開
查看結果樹:
- 請求:包含請求頭、請求體
- 響應:包含響應頭、響應體
- 取樣結果:可以查看配置信息
聚合報告:
當前測試吞吐量:每秒請求 100次
五、其它操作
?1. 清理測試數據
當測試后,我們一般需要清除這一次的數據
- 在頂部導航欄圖標下的掃把按鈕即可清除當前測試數據,
- 注意兩個掃把,需選中監聽測試組件 --> 點擊
- 另一個直接點擊清除全部的掃把按鈕