1. 程式人生 > >Jmeter壓測工具使用總結

Jmeter壓測工具使用總結

1、常用測試工具對比
1、loadrunner 效能穩定,壓測結果及細粒度大,可以自定義指令碼進行壓測,但是太過於重大,功能比較繁多
2、apache ab(單介面壓測最方便) 模擬多執行緒併發請求,ab命令對發出負載的計算機要求很低,既不會佔用很多CPU,也不會佔用太多的記憶體,但卻會給目標伺服器造成巨大的負載, 簡單DDOS攻擊等
3、webbench webbench首先fork出多個子程序,每個子程序都迴圈做web訪問測試。子程序把訪問的結果通過pipe告訴父程序,父程序做最終的統計結果。

2、Jmeter目錄檔案講解
bin:核心可執行檔案,包含配置
jmeter.bat: windows啟動檔案:
jmeter: mac或者linux啟動檔案:
jmeter-server:mac或者Liunx分散式壓測使用的啟動檔案
jmeter-server.bat:mac或者Liunx分散式壓測使用的啟動檔案
jmeter.properties: 核心配置檔案

extras:外掛拓展的包
lib:核心的依賴包
ext:核心包
junit:單元測試包
3、Jmeter基礎功能元件介紹執行緒組和Sampler
1、新增->threads->執行緒組(控制總體併發)
執行緒數:虛擬使用者數。一個虛擬使用者佔用一個程序或執行緒

準備時長(Ramp-Up Period(in seconds)):全部執行緒啟動的時長,比如100個執行緒,20秒,則表示20秒內100個執行緒都要啟動完成,每秒啟動5個執行緒
迴圈次數:每個執行緒傳送的次數,假如值為5,100個執行緒,則會發送500次請求,可以勾選永遠迴圈

2、執行緒組->新增-> Sampler(取樣器) -> Http 
(一個執行緒組下面可以增加幾個Sampler)
名稱:取樣器名稱
註釋:對這個取樣器的描述

web伺服器:
預設協議是http
預設埠是80
伺服器名稱或IP :請求的目標伺服器名稱或IP地址

路徑:伺服器URL

Use multipart/from-data for HTTP POST :當傳送POST請求時,使用Use multipart/from-data方法傳送,預設不選中。

3、檢視測試結果
執行緒組->新增->監聽器->察看結果樹

4、Jmeter的斷言基本使用
增加斷言: 執行緒組 -> 新增 -> 斷言 -> 響應斷言 
apply to(應用範圍):
Main sample only: 僅當前父取樣器 
進行斷言,一般一個請求,如果發一個請求會觸發多個,則就有sub 
sample(比較少用)
要測試的響應欄位:
響應文字:即響應的資料,比如json等文字
響應程式碼:http的響應狀態碼,比如200,302,404這些
響應資訊:http響應程式碼對應的響應資訊,例如:OK, Found
Response Header: 響應頭
模式匹配規則:
包括:是響應文字的一個子集,是包含關係,可以用正則表示式
匹配:使用正則表示式匹配
equals:完全與響應文字相同,不能使用正則表示式
substring:也是包含關係,但是不能使用正則表示式
2、斷言結果監聽器: 執行緒組-> 新增 -> 監聽器 -> 斷言結果
裡面的內容是sampler取樣器的名稱
斷言失敗,檢視結果樹任務結果顏色標紅
通過結果數裡面雙擊不通過的記錄,可以看到錯誤資訊)
3、每個sample下面可以加單獨的結果樹,然後同時加多個斷言,最外層可以加個結果樹進行彙總
5、結果聚合報告分析
新增聚合報告:執行緒組->新增->監聽器->聚合報告(Aggregate Report)
lable: sampler的名稱
Samples: 一共發出去多少請求,例如10個使用者,迴圈10次,則是 100
Average: 平均響應時間
Median: 中位數,也就是 50% 使用者的響應時間
90% Line : 90% 使用者的響應不會超過該時間 (90% of the samples took no more than this time. The remaining samples at least as long as this)
95% Line : 95% 使用者的響應不會超過該時間
99% Line : 99% 使用者的響應不會超過該時間
min : 最小響應時間
max : 最大響應時間

Error%:錯誤的請求的數量/請求的總數
Throughput: 吞吐量——預設情況下表示每秒完成的請求數(Request per Second) 可類比為qps
KB/Sec: 每秒接收資料量
6、Jmeter使用者自定義變數
1、執行緒組->add -> Config Element(配置原件)-> User Definde Variable(使用者定義的變數)
2、引用方式${XXX},在介面中變數中使用
7、CSV資料檔案使用
1、執行緒組->add -> Config Element(配置原件)-> CSV data set config (CSV資料檔案設定)
2、如果是多個引數需要同時引用,則在CSV資料檔案裡面設定加多個欄位 Variabled names(comma-delitited): csv_name,csv_pwd
8、資料庫壓測操作
配置講解:
1、Thread Group -> add -> sampler -> jdbc request 新增資料庫請求
2、jar包新增 mysql-connector-java-5.1.30.jar 新增連線資料庫的jar包
3、JDBC connection Configuration 配置
JDBC request->add -> config element -> JDBC connection configuration
核心配置
Max Number of connections : 最大連線數
MAX wait :最大等待時間
Auto Commit: 是否自動提交事務
DataBase URL : 資料庫連線地址 jdbc:mysql://127.0.0.1:3306/blog
JDBC Driver Class : 資料庫驅動,選擇對應的mysql
username:資料庫使用者名稱
password:資料庫密碼
資料庫語句:
1、Debug Sampler使用(結果樹中檢視) Thread Group -> add -> sampler -> debug sampler
2、引數講解:(sql結尾不要加";")
1、variable name of pool declared in JDBC connection configuration(和配置檔案同名)
2、Query Type 查詢型別
3、parameter values 引數值
4、parameter types 引數型別
5、variable names sql執行結果變數名
6、result variable names 所有結果當做一個物件儲存 7、query timeouts 查詢超時時間 
8、 handle results 處理結果集
9、Jmeter非GUI介面引數
-h 幫助
-n 非GUI模式
-t 指定要執行的 JMeter 測試指令碼檔案
-l 記錄結果的檔案 每次執行之前,(要確保之前沒有執行過,即xxx.jtl不存在,不然報錯)
-r Jmter.properties檔案中指定的所有遠端伺服器
-e 在指令碼執行結束後生成html報告
-o 用於存放html報告的目錄(目錄要為空,不然報錯)
官方配置檔案地址 http://jmeter.apache.org/usermanual/get-started.html

10、Jmeter壓測介面的效能優化
1、使用非GUI模式:jmeter -n -t test.jmx -l result.jtl
2、少使用Listener, 如果使用-l引數,它們都可以被刪除或禁用。
3、在載入測試期間不要使用“檢視結果樹”或“檢視結果”表監聽器,只能在指令碼階段使用它們來除錯指令碼。
4、包含控制器在這裡沒有幫助,因為它將檔案中的所有測試元素新增到測試計劃中。
5、不要使用功能模式,使用CSV輸出而不是XML
6、只儲存你需要的資料,儘可能少地使用斷言
7、如果測試需要大量資料,可以提前準備好測試資料放到資料檔案中,以CSV Read方式讀取。
8、用內網壓測,減少其他頻寬影響壓測結果
9、如果壓測大流量,儘量用多幾個節點以非GUI模式向伺服器施壓
11、Jmeter圖形化HTML壓測報告dashboard
1、Test and Report informations
Source file:jtl檔名
Start Time :壓測開始時間
End Time :壓測結束時間
Filter for display:過濾器
Lable:sampler取樣器名稱 
2、APDEX(Application performance Index)
apdex:應用程式效能指標,範圍在0~1之間,1表示達到所有使用者均滿意
T(Toleration threshold):可接受閥值
F(Frustration threshold):失敗閥值
3、Requests Summary 請求總結
OK:成功率
KO:失敗率
4、Statistics 統計資料
lable:sampler取樣器名稱
samples:請求總數,併發數*迴圈次數
KO:失敗次數
Error%:失敗率
Average:平均響應時間
Min:最小響應時間
Max:最大響應時間
90th pct: 90%的使用者響應時間不會超過這個值(關注這個就可以了) 2ms,3ms,4,5,2,6,8,3,9
95th pct: 95%的使用者響應時間不會超過這個值
99th pct: 99%的使用者響應時間不會超過這個值 (存在極端值)
throughtput:Request per Second吞吐量 qps
received:每秒從伺服器接收的資料量
send:每秒傳送的資料量
12、Jmeter圖形化HTML壓測報告Charts報表講解
1、Over Time(隨著時間的變化)
Response Times Over Time:響應時間變化趨勢
Response Time Percentiles Over Time (successful responses):最大,最小,平均,使用者響應時間分佈
Active Threads Over Time:併發使用者數趨勢
Bytes Throughput Over Time:每秒接收和請求位元組數變化,藍色表示傳送,黃色表示接受
Latencies Over Time:平均響應延時趨勢
Connect Time Over Time :連線耗時趨勢
2、Throughput
Hits Per Second (excluding embedded resources):每秒點選次數
Codes Per Second (excluding embedded resources):每秒狀態碼數量
Transactions Per Second:即TPS,每秒事務數
Response Time Vs Request:響應時間和請求數對比
Latency Vs Request:延遲時間和請求數對比
3、Response Times
Response Time Percentiles:響應時間百分比
Response Time Overview:響應時間概述
Time Vs Threads:活躍執行緒數和響應時間
Response Time Distribution:響應時間分佈圖
13、Jmeter壓測注意事項
the firewalls on the systems are turned off or correct ports are opened.
系統上的防火牆被關閉或正確的埠被開啟。

all the clients are on the same subnet.
所有的客戶端都在同一個子網上。

the server is in the same subnet, if 192.x.x.x or 10.x.x.x IP addresses are used. If the server doesn't use 192.xx or 10.xx IP address, there shouldn't be any problems.
如果使用192.x.x.x或10.x.x.x IP地址,則伺服器位於同一子網中。 如果伺服器不使用192.xx或10.xx IP地址,則不應該有任何問題。

Make sure JMeter can access the server.
確保JMeter可以訪問伺服器。

Make sure you use the same version of JMeter and Java on all the systems. Mixing versions will not work correctly.
確保在所有系統上使用相同版本的JMeter和Java。 
混合版本將無法正常工作。

You have setup SSL for RMI or disabled it.
您已為RMI設定SSL或將其禁用。


官網地址 http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
壓測注意事項:一定要用內網IP,不用用公網IP