1. 程式人生 > >jmeter:Jmeter3.1 使用技巧

jmeter:Jmeter3.1 使用技巧

轉發一篇講述jmeter功能比較清晰的文章http://www.cnblogs.com/littleatp/p/6597415.html

一、JMeter官網

二、概念

ElapsedTime
消耗時間,與ResponseTime/SampleTime一致,表示開始請求到響應接收完畢的時間;

Latency
延遲時間,僅包括開始請求到準備接收響應的時間;

90% Line
一種時間度量指標,表示90%的請求都在該響應時間內完成;

Throughput
吞吐量,指每秒處理的請求數;
公式:Throughput=(number of requests) / (total time)

吞吐量與響應時間/併發數的關係:
TPS=U_concurrent/(T_response+T_think)
其中T_think為使用者思考時間

ThreadGroup
執行緒組,用於控制併發請求的元件;
設定引數

  1. 執行緒數量,控制併發數量
  2. rame-up週期,執行緒柔和增長週期,比如100個執行緒的增長週期是10s,那麼1s增加10個執行緒
  3. 固定請求數量
  4. 迴圈執行設定,可指定開始和結束時間

SummaryReport
聚合報告,結果指標包括:

屬性 描述
label 每個樣本的名稱
samples 測試請求總數量
average 平均響應時間
median 50%使用者的響應時間
90%line 90%使用者的響應時間
min 最小響應時間
max 最大響應時間
error% 錯誤發生率
recv KB/s 每秒接收的資料量
throughput 吞吐量(TPS)

三、啟動停止

GUI啟動

./jmeter.bat

命令列啟動

jmeter -n -t xxx.jmx

停止測試

//平滑停止(gracefully stop, thread will stop at next opportunity)
./bin/shutdown.sh  

//立即停止(will kill thread directory)
./bin/stoptest.sh 

四、使用變數

properties檔案

Jmeter主要的配置檔案

  1. jmeter.properties,定義jmeter執行的關鍵配置;
  2. system.properties,定義Java程序的系統變數,通過System.getProperties()可查詢;
  3. user.properties,自定義配置,可覆蓋jmeter.properties

命令列啟動

-J 指定本地JMeter變數
-D 指定Java系統變數
-G 指定全域性JMeter變數,在遠端測試時會傳輸到測試節點

樣例

PATH=$PATH:/opt/local/jre/bin
JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k"
jmeter -Jmongo.host=xxx -Jmongo.port=xxx -n -t test.jmx

JVM_ARGS 用於指定JVM大小,-n指定了no-gui模式啟動
-Gglobal.properties可代替-Gvar=value的方式

引用方式

在測試計劃中可通過函式對變數進行引用:

${__P(varName,defaultValue)}

五、遠端測試

  1. 將jmeter部署到遠端節點,啟動server
PATH=$PATH:/opt/local/jre/bin
JVM_ARGS="-Xmx2048m -Xms512m -Xmn256m -XX:PermSize=128m -Xss256k"

./bin/jmeter-server &

埠設定
Jmeter-server採用RMI實現通訊,預設埠為1099
可編輯user.properties進行修改:

server_port=1999
  1. 本地配置遠端節點

修改user.properties:

remote_hosts=xxx:1999
  1. 命令列執行

配置好遠端節點之後,可直接通過GUI客戶端執行測試,然而在自動化的場景下往往需要採用命令列方式執行:

//啟動全部遠端節點測試
jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -r

//指定部分遠端節點測試
jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999

//停止遠端節點測試
jmeter -Gmongo.host=xxx -Gmongo.port=xxx -n -t test.jmx -R192.168.0.100:1999,192.168.0.101:1999 -Z

六、生成報告

jtl檔案
Jmeter 執行測試後可生成jtl/csv/xml的結果檔案,通過在結果監聽器中新增輸出路徑可獲得。
也可以通過命令列方式直接輸出,如:

jmeter -n -t test.jmx-l result.jtl

html報告
Jmeter3.x支援直接生成HTML格式的報告,可參考詳細說明

  1. 直接生成報告

    jmeter -n -t test.jmx-l result.jtl -e -o /opt/local/jmeter/result/html

    -e 表示生成html報告,-o指定目標路徑(必須為空)

  2. 從jtl檔案中轉換

    jmeter -g result.jtl -o /opt/local/jmeter/result/html

定製報告

修改user.properties:

//按sample名稱過濾
jmeter.reportgenerator.sample_filter=find|update|delete|list|insert

//APDEX模型-滿足需求閾值(響應時間)
jmeter.reportgenerator.apdex_satisfied_threshold=300

//APDEX模型-可容忍閾值(響應時間)
jmeter.reportgenerator.apdex_tolerated_threshold=1200

//資料聚合頻率,效能測試場景可適當減小,穩定性測試可加長,預設60s
jmeter.reportgenerator.overall_granularity=5000

關鍵報表
ResponseTimeOverTime
TransactionsPerSecond
ActiveThreadOverTime
ResponseTimePercentiesOverTime

七、效能監控

使用Perfmon外掛,外掛地址

  1. 部署ServerAgent
    將ServerAgent上傳到目標伺服器,執行startAgent.sh啟動;
    預設情況下會啟動4444,可修改啟動埠:
./startAgent.sh --udp-port 7777 --tcp-port 7777
  1. 編輯Jmeter指令碼檔案,新增Perfmon監聽器。
    可設定將監控資料輸出到jtl檔案用於後續分析

  2. 自動生成圖片
    需藉助JMeterPluginsCMD外掛,下載地址
    命令列執行:

    JMeterPluginsCMD.sh --generate-png cpu.png --input-jtl perfmon-cpu.jtl --plugin-type PerfMon --width 800 --height 600

八、常用外掛

SteppingThreadGroup

外掛地址
Jmeter自帶的ThreadGroup只能均勻增加執行緒,無法模擬更真實的壓力場景;

該外掛支援更靈活的控制併發壓力,如:

初始啟動20執行緒,此後每10秒鐘增加5個執行緒,到達100個執行緒之後持續執行100s...

CompositeGraph

外掛地址
該外掛將響應時間、吞吐量報表進行了組合,需依賴於其他幾個外掛。

在觀察伺服器極限效能時比較有用,可用於權衡指定請求頻度下併發數大小。
通常情況下當併發數超過系統承受能力時,TPS出現明顯下滑,響應時間持續上升。

九、參考資料