elasticSearch load testing with Jmeter

對於網站效能很重要的一個指標就是:能夠承受多少壓力。評估你的網站使用者,並實際測試給出數據,就是壓力測試的目標

壓力測試工具 Jmeter

免費,好用,windows 也可以用,透過 GUI 撰寫測試腳本,利用 CLI 執行,產出美美的報告及數據結果,不用嗎?

當然要囉,安裝方法很簡單,搞定 Java SDK 再下載一個 windows 版本的 jmeter 解壓縮執行就行了

Java SDK

如果在 command line 下java -version有出現版本資訊的話就行了,沒有的話就需要去官網下載,過程會需要加入它們的會員

Jmeter

APACHE Jmeter download下載 Binaries 的 zip 檔案,拿回來後挑一個喜歡的地方放置解壓縮,解壓縮完成後在bin目錄底下有一個jmeter.bat,執行就會出現 jmeter GUI 了。

他同時會開啟一個 command line 視窗,不用關閉,在視窗中也會提醒你若需要跑測試,最好還是用 cli 的方式執行

撰寫測試腳本

透過 GUI 來撰寫測試腳本

TestPlan: Add -> Threads -> Thread Group

Number of Threads: 模擬多少個使用者的請求,ex:3000
Ramp-Up Period: 在幾秒內達到所設定的使用者人數,ex:10
Loop Count: 跑幾次,1

上面這段設定口語化一點就是:10 秒鐘內發出 3000 個請求,重複一次

Thread Group: Add -> Sampler -> HTTP Request

Name: 給這個 request 一個名字
Protocol: 通訊協定,這邊要輸入http或其他的,沒輸入不能用的
Server Name or IP: 把主機 host 或 IP 填入
Port Number: elasticSearch 預設是 9200,照著填吧

在 HTTP Request 的部分,就看要測試甚麼路徑、Method,依序填入

HTTP Request: Add-> Config Element -> HTTP Header Manager

因為送的是 Json,所以加一個 Content-Type header 的資料在這邊

Thread Group: Add -> Listener -> Summary Report

於 GUI 內用來看測試結果的

這些東西都做完之後,可以點綠色三角形 ICON 跑測試,就可以在這邊看到測試結果,但建議還是先存檔,然後用 CLI 跑

指令備忘

透過 command line 到剛才安裝的目錄/bin 底下,於此處執行命令,可附加參數

-n: 不跑 GUI
-t: 執行計畫的檔案名稱, 附檔名為 jmx 的檔案
-l: 執行結果的儲存檔案名稱,副檔名為 jtl
-e: load testing 後產生報表 dashboard
-o: 輸出資料夾名稱

1
jmeter -n -t test.jmx -l result.jtl -e -o report

參考連結

  1. Elasticsearch Load Testing - Learn How
  2. [Stress Test] JMeter Command line mode and report dashboard 指令操作模式與報表儀表板