網際網路分散式架構技術
本文主要介紹一下常用的兩款測試工具:
- 效能測試壓測工具-Jmeter
- 效能測試監控工具-JProfiler
1. 效能測試壓測工具-Jmeter
1.2 Jmeter簡介
JMeter,一個100%的純Java桌面應用,由Apache組織的開放原始碼專案,它是功能和效能測試的工具。具有高可擴充套件性、支援Web(HTTP/HTTPS)、SOAP、FTP、JAVA等多種協議的特點。
目前最新版本的jmeter為3.3版本,要求jdk版本為1.8
Jdk版本為1.7的,可以下載3.1版本,功能基本一致
1.3 Jmeter安裝
下載Jmeter後,直接解壓,在bin目錄下,雙擊
1.4 使用說明
1.4.1 建立一個執行緒組
新增執行緒組並設定引數大小:測試計劃->新增->Threads ->執行緒組
1.4.2 建立一個Http請求(GET)
新增HTTP請求:執行緒組下新增->Sampler ->HTTP請求
注意:同一個執行緒組內的多個請求是順序執行的,不同執行緒組的請求的並行執行的
1.4.3 建立一個Http請求(POST)
新增HTTP請求:執行緒組下新增->Sampler ->HTTP請求
1.4.4 給請求新增header
新增響應斷言:HTTP請求->
1.4.5 給請求新增一個斷言
新增響應斷言:HTTP請求->新增->斷言 ->響應斷言
1.4.6 檢視請求返回結果
新增檢視結果樹: HTTP請求-監聽器-檢視結果樹
1.4.7 指令碼引數化設定-內建函式
為了使測試資料動態化,更真實的模擬使用者請求,需要對介面資料做引數化
Jmeter的函式助手裡,有全部的函式以及相關文件
常用的內建函式:
- 隨機數:__Random
- 隨機字串: __RandomString
- 時間戳:__time
- UUID:__UUID
1.4.8 指令碼引數化設定 -CSV Data Set Config
新增CSV Data Set Config :執行緒組->新增->配置元件 -> CSV Data Set Config
1.4.9 引數化引用
在HTTP請求裡,把需要做引數化的引數值,用${引數名}代替
1.4.10 Jmeter關聯-資料提取
工作中經常有這種測試需求:介面B的引數來源於介面A的返回值,這個時候如果要測試介面B,就需要先把A介面的資料提取出來
步驟:
1、先新增介面A的請求,A請求的返回值為{"skuId":123,"price":93.0,"stock":1977,"opt":abc,"result":true}
2、在A請求內部建立一個後置處理器-JSON Extractor,按照下圖填寫
解釋
Variable name:定義一個變數,儲存提取的資料
JSON Path expressions:json表示式,用$代表整個json資料,$.stock標識json字串中key為stock的值
Match Number:匹配數字,根據json表示式匹配出的資料可能有多個,這個數字表示獲取第幾個,如1代表匹配出的第一個資料;0代表隨機一個數據
3、新增請求B,在B請求的url中,直接用${引數名}來代表JSON提取器中定義的引數,如
1.4.11 Jmeter測試結果分析-聚合報告
1.4.12 Jmeter命令列模式
在GUI模式下進行壓測,Jmeter本身的效能開銷非常大,因此官方建議真正壓測時在非GUI模式下進行
所以一般選擇在Linux下,或windows命令列下執行壓測
GUI模式下,可以先把修改下jmeter的bin目錄下jmeter.properties
summariser.interval=10(實時展示效能資料的間隔時間s)
在GUI模式下先把jmx指令碼建立並除錯好,然後在命令列下執行命令:
jmeter -n –t test.jmx -l result.jtl
-n: 命令列模式
-t:jmx指令碼路徑
-l:測試結果檔案路徑
命令列模式下結果分析:
1、通過檢視控制檯日誌
2、使用聚合報告開啟測試生成的jtl檔案,也可以獲取到效能資料
3、根據jtl檔案生成HTML報表
使用報表前先修改Jmeter的bin目錄下reportgenerator.properties
修改jmeter.reportgenerator.overall_granularity=1000(報表統計的間隔時間)
執行以下命令後,就會在當前目錄下的output資料夾中生產html報表
jmeter –g test.jtl –o ./output
下載到本地用瀏覽器開啟即可檢視報告
TPS趨勢圖:
平均響應時間趨勢圖:
2. 效能監控分析工具-Jprofiler
2.1 Jprofiler簡介
JProfiler是一個商業授權的Java剖析工具,由EJ技術有限公司,針對Java EE和Java SE應用程式開發的。
Jprofiler主要有兩部分組成:客戶端和Server端
注意:Jprofiler server端啟動後對Java程式的效能影響較大,所以不能作為常規性的監控工具,只能在排查問題時使用
2.2 Jprofiler安裝和配置
2.2.1 服務端安裝配置
1.安裝
在伺服器上安裝JProfiler9.1.1 server端
rmp –ivh jprofiler_linux_9_1_1.rpm
安裝成功後,jprofiler預設安裝在了/opt/jprofiler9目錄下
2.配置
在tomcat的catalina.sh,把以下引數新增到JVM引數配置的地方,如
JAVA_OPTS="$JAVA_OPTS -agentpath:/opt/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849,nowait"
配置好後重啟tomcat
2.2.2 客戶端安裝配置
1. 在windows下安裝好jprofiler_windows_9_1_1.exe
2. 啟動Jprofiler,按照以下步驟操作