Jmeter3.1 使用及新增報告功能

1、JMeter官網

下載地址
http://jmeter.apache.org/download_jmeter.cgicss

Jmeter wiki
https://wiki.apache.org/jmeterhtml

2、概念

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

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

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

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

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

ThreadGroup
線程組,用於控制併發請求的組件;
設置參數bash

  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)

3、啓動中止

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 

4、使用變量

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)}

5、遠程測試

  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

6、生成報告

jtl文件
Jmeter 執行測試後可生成jtl/csv/xml的結果文件,經過在結果監聽器中添加輸出路徑可得到。
也能夠經過命令行方式直接輸出,如:(-1是小寫字母L哦,不要寫錯了)

 

  • 基本命令格式: 
    jmeter -n -t <test JMX file> -l <test log file> -e -o <Path to output folder>
  • 樣例: 
    jmeter -n -t F:\PerformanceTest\TestCase\script\getToken.jmx -l testLogFile -e -o ./output

執行成功後會在\apache-jmeter-3.0\bin\output目錄下產生以下文件(夾):

 

 

 

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

7、性能監控

使用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

8、經常使用插件

SteppingThreadGroup

插件地址
Jmeter自帶的ThreadGroup只能均勻增長線程,沒法模擬更真實的壓力場景;

該插件支持更靈活的控制併發壓力,如:

初始啓動20線程,此後每10秒鐘增長5個線程,到達100個線程以後持續運行100s...

CompositeGraph

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

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

9、參考資料

GitBook-Jmeter參考
https://aimer1124.gitbooks.io/jmeter-tutorial/

yukinami的博客
http://yukinami.github.io/2015/11/26/性能測試指南/

Jmeter邏輯控制器(總結的不錯的一篇文章)
http://www.guru99.com/controllers-in-jmeter.html

Jmeter VS LoadRunner
http://www.cnblogs.com/shuiyelifang/p/5749523.html

TPS/響應時間/併發數的研究
http://blog.csdn.net/wind19/article/details/8600083

相關文章
相關標籤/搜索