一、經常使用測試工具對比
一、loadrunner 性能穩定,壓測結果及細粒度大,能夠自定義腳本進行壓測,可是太過於重大,功能比較繁多
二、apache ab(單接口壓測最方便) 模擬多線程併發請求,ab命令對發出負載的計算機要求很低,既不會佔用不少CPU,也不會佔用太多的內存,但卻會給目標服務器形成巨大的負載, 簡單DDOS攻擊等
三、webbench webbench首先fork出多個子進程,每一個子進程都循環作web訪問測試。子進程把訪問的結果經過pipe告訴父進程,父進程作最終的統計結果。二、Jmeter目錄文件講解
bin:核心可執行文件,包含配置
jmeter.bat: windows啓動文件:
jmeter: mac或者linux啓動文件:
jmeter-server:mac或者Liunx分佈式壓測使用的啓動文件
jmeter-server.bat:mac或者Liunx分佈式壓測使用的啓動文件
jmeter.properties: 核心配置文件extras:插件拓展的包
lib:核心的依賴包
ext:核心包
junit:單元測試包html三、Jmeter基礎功能組件介紹線程組和Sampler
一、添加->threads->線程組(控制整體併發)
線程數:虛擬用戶數。一個虛擬用戶佔用一個進程或線程準備時長(Ramp-Up Period(in seconds)):所有線程啓動的時長,好比100個線程,20秒,則表示20秒內100個線程都要啓動完成,每秒啓動5個線程
循環次數:每一個線程發送的次數,假如值爲5,100個線程,則會發送500次請求,能夠勾選永遠循環 java二、線程組->添加-> Sampler(採樣器) -> Http
(一個線程組下面能夠增長几個Sampler)
名稱:採樣器名稱
註釋:對這個採樣器的描述 mysqlweb服務器:
默認協議是http
默認端口是80
服務器名稱或IP :請求的目標服務器名稱或IP地址 linux路徑:服務器URL web
Use multipart/from-data for HTTP POST :當發送POST請求時,使用Use multipart/from-data方法發送,默認不選中。 正則表達式
三、查看測試結果
線程組->添加->監聽器->察看結果樹sql四、Jmeter的斷言基本使用
增長斷言: 線程組 -> 添加 -> 斷言 -> 響應斷言
apply to(應用範圍):數據庫Main sample only: 僅當前父取樣器
進行斷言,通常一個請求,若是發一個請求會觸發多個,則就有sub
sample(比較少用)要測試的響應字段:apache
響應文本:即響應的數據,好比json等文本
響應代碼:http的響應狀態碼,好比200,302,404這些
響應信息:http響應代碼對應的響應信息,例如:OK, Found
Response Header: 響應頭模式匹配規則:json
包括:是響應文本的一個子集,是包含關係,能夠用正則表達式
匹配:使用正則表達式匹配
equals:徹底與響應文本相同,不能使用正則表達式
substring:也是包含關係,可是不能使用正則表達式二、斷言結果監聽器: 線程組-> 添加 -> 監聽器 -> 斷言結果
裏面的內容是sampler採樣器的名稱
斷言失敗,查看結果樹任務結果顏色標紅
經過結果數裏面雙擊不經過的記錄,能夠看到錯誤信息)三、每一個sample下面能夠加單獨的結果樹,而後同時加多個斷言,最外層能夠加個結果樹進行彙總
五、結果聚合報告分析
新增聚合報告:線程組->添加->監聽器->聚合報告(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: 每秒接收數據量六、Jmeter用戶自定義變量
一、線程組->add -> Config Element(配置原件)-> User Definde Variable(用戶定義的變量)
二、引用方式${XXX},在接口中變量中使用七、CSV數據文件使用
一、線程組->add -> Config Element(配置原件)-> CSV data set config (CSV數據文件設置)
二、若是是多個參數須要同時引用,則在CSV數據文件裏面設置加多個字段 Variabled names(comma-delitited): csv_name,csv_pwd八、數據庫壓測操做
配置講解:
一、Thread Group -> add -> sampler -> jdbc request 添加數據庫請求
二、jar包添加 mysql-connector-java-5.1.30.jar 添加鏈接數據庫的jar包
三、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:數據庫密碼
數據庫語句:
一、Debug Sampler使用(結果樹中查看) Thread Group -> add -> sampler -> debug sampler
二、參數講解:(sql結尾不要加";")
一、variable name of pool declared in JDBC connection configuration(和配置文件同名)
二、Query Type 查詢類型
三、parameter values 參數值
四、parameter types 參數類型
五、variable names sql執行結果變量名
六、result variable names 全部結果當作一個對象存儲 七、query timeouts 查詢超時時間
八、 handle results 處理結果集九、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
十、Jmeter壓測接口的性能優化
一、使用非GUI模式:jmeter -n -t test.jmx -l result.jtl
二、少使用Listener, 若是使用-l參數,它們均可以被刪除或禁用。
三、在加載測試期間不要使用「查看結果樹」或「查看結果」表監聽器,只能在腳本階段使用它們來調試腳本。
四、包含控制器在這裏沒有幫助,由於它將文件中的全部測試元素添加到測試計劃中。
五、不要使用功能模式,使用CSV輸出而不是XML
六、只保存你須要的數據,儘量少地使用斷言
七、若是測試須要大量數據,能夠提早準備好測試數據放到數據文件中,以CSV Read方式讀取。
八、用內網壓測,減小其餘帶寬影響壓測結果
九、若是壓測大流量,儘可能用多幾個節點以非GUI模式向服務器施壓十一、Jmeter圖形化HTML壓測報告dashboard
一、Test and Report informations
Source file:jtl文件名
Start Time :壓測開始時間
End Time :壓測結束時間
Filter for display:過濾器
Lable:sampler採樣器名稱二、APDEX(Application performance Index)
apdex:應用程序性能指標,範圍在0~1之間,1表示達到全部用戶均滿意
T(Toleration threshold):可接受閥值
F(Frustration threshold):失敗閥值三、Requests Summary 請求總結
OK:成功率
KO:失敗率四、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:每秒發送的數據量十二、Jmeter圖形化HTML壓測報告Charts報表講解
一、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 :鏈接耗時趨勢二、Throughput
Hits Per Second (excluding embedded resources):每秒點擊次數
Codes Per Second (excluding embedded resources):每秒狀態碼數量
Transactions Per Second:即TPS,每秒事務數
Response Time Vs Request:響應時間和請求數對比
Latency Vs Request:延遲時間和請求數對比三、Response Times
Response Time Percentiles:響應時間百分比
Response Time Overview:響應時間概述
Time Vs Threads:活躍線程數和響應時間
Response Time Distribution:響應時間分佈圖1三、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