Skip to main content

JMeter 介紹及使用心得-壓測工具筆記

·286 words·2 mins
Table of Contents

最近有個系統需要進行壓測,剛好以前有稍微碰過 jmeter,但並沒有寫筆記記錄。
藉此趁這個機會來複習一下,順便記錄一下使用心得。

壓測工具有很多比較著名的像是 ApacheBench、JMeter、k6….,
而當初選擇 Jmeter 主要是因為一張梗圖 XD ,原圖我就不放在這。 有興趣可以去原網址看。

我這邊附上我自己做的

jmeter.png

JMeter 介紹
#

JMeter 與 ApacheBench (AB) 一樣都是 Apache 基金會所維護都開源專案,但與 AB 不同是 AB 只能進行 HTTP 的壓測且只提供 command 的方式,JMeter 支援更多的協定像是基本的 HTTP/S、FTP、JDB,且他還提供 GUI 介面讓用戶可以更直觀的使用。

JMeter 安裝
#

JMeter 的安裝很簡單,他是由 Java 所撰寫且支援多種平台(Windows、Linux、Mac)只要有裝 Java 8+ 就可以執行,安裝方式只要去官網下載他的 Binaries 檔,下載完後直接解壓縮打開即可。

執行檔位置解壓縮後的 bin 目錄底下。如下圖:

jmeter_bin.png

因為我是在 mac 上面操作,所以有遇到被 mac 判定為惡意軟體然後開不起來的狀況。
記得去系統設定→隱私權及安全性頁面 拉到最下面就可以看到“已阻擋的訊息”,點擊強制開啟就可以執行。
jmeter!.png

JMeter 操作說明
#

由於 JMeter 的功能很多,我這邊只介紹我平常在用的,如果你要進行簡單的壓測 API,那看我等等介紹的就夠了,更詳細的可能就要找其他大神XD

開啟 JMeter
#

打開 JMeter 後會看到有一個 Test Plan,Plan 為 JMeter 儲存的基本單位,你可以設定完後把 Plan 存下來,另外一個頁面只能存在一個 Plan,但如果你想要同時操作有多個 Plan 你可以開多個視窗。 如下圖

jmeter_plan.png

常用參數介紹

  • Run Thread Groups consecutively:一個 Plan 可以存在很多 Thread Group ,這個參數可以用來設定你在執行 Plan時,每個 Thread Groups 是同時進行壓測,還是一個執行完後換下一個。

創建 Thread Group
#

Thread Group (線程組):用來定義壓測時的用戶數,啟動時間和循環次數等。
創建方式如下:

create_thread_group.png

Thread Group 頁面如下:
thread_group.png

常用參數說明:

  • Number of Thread (users):使用者數量。
  • Ramp-up period (seconds):啟動所有 Thread (users)所需要的時間。
  • Loop Count: 每個 Thread 執行的次數,如果勾選 Infinite 則會一直跑。

如果我今天要模擬 100 位用戶同時進入登入我的網站,那我的設定如下:

  • Number of Thread (users):100
  • Ramp-up period (seconds):5
    補充一下,一般的情況下用戶不太可能真的同時進入,而是一個超短時間 因次我沒有設定 1 之類的時間。
  • Loop Count: 1

加入 HTTP Request
#

常見的壓測大多都是壓測 API,因此我們需要設定一個 HTTP 請求,來指定 JMeter 要攻擊的位置。
創建方式:右鍵點擊 Thread Group → Add → Sampler → Http Request
畫面如下:

http_request.png

這邊要注意的是如果是 post 要上傳檔案,要點擊 Parameters 最旁邊的 Files Upload,下方畫面就會切過去。

加入 HTTP Header Manager
#

有時候 API 在呼叫時會需要在 Header 設定一些參數,例如 Accept、Authorization 等。
創建方式:右鍵點擊 Thread Group → Add → Config Element → Http Header Manager
畫面如下:

http_header.png

加入監聽器
#

最後當然是要來查看我們壓測的結果,以下三個 Listener 為我在測試時常用到的 Listener。

  • Summary Report 這個報告主要會提供每個 sampler (取樣)的測試結果。相同的 Label 壓測結果會合併在一起。

    • 創建方式:右鍵點擊 Thread Group → Add → Listener → Summary Report
    • 畫面如下:
      summary_report.png
    • 常用參數說明:
      • Label 是對應到 sampler 的 name,也就是在設定 HTTP Request 中的 name。
      • Samples:這個是請求的數量。
      • Average:為每個請求的平均回應時間(單位毫秒)
      • Min:為所有請求中最小的回應時間(單位毫秒)
      • Max:為所有請求中最大的回應時間(單位毫秒)
      • Error %:請求錯誤的百分比。
      • Throughput:每秒處理的請求量。
      • KB/sec:每秒處理的數據量 (以 KB 為單位)。
  • View Results Tree 這邊可以查看每個請求的結果、還有回應訊息。如果 api 有錯誤訊息也可以從這邊看。

    • 創建方式:右鍵點擊 Thread Group → Add → Listener → View Results Tree
    • 畫面如下:
      view_results_tree.png
  • View Results in Table: 這個是把每個請求的資料表格化,可以看到

    • 創建方式:右鍵點擊 Thread Group → Add → Listener → View Results in Table
    • 畫面如下:
      view_results_table.png

以上為我平常使用 Jmeter 的操作說明,其實 Jmeter 的功能非常的多,可以實現很多種壓測狀況。 目前其實沒有玩得很深,日後如果有使用到其他的功能會再慢慢補上。


應該大家都知道梗圖是出自葬送的芙莉蓮這部動畫,如果不知道的趕快去看一下XD
另外就順便推薦一下芙莉蓮第二季的 OP !!!
以下 YT 影片畫面會有劇透,還沒看過的先去看完後再回來XD

小P
Author
小P