1、分佈式壓測:多臺機器向一個目標服務器進行壓測。(單機器性能有限)
2、jmeter分佈式壓測原理:主機,肉雞必須在同一個網段。
1.Jmeter
分佈式測試時,選擇其中一臺作爲調度機(master
),其它機器做爲執行機(slave
)。
2. 執行時,master會把腳本發送到每臺slave
上,slave
拿到腳本後就開始執行,slave
執行時不需要啓動GUI
,我理解它應該是通過命令行模式執行的。
3. 執行完成後,slave
會把結果回傳給master
,master
會收集所有slave
的信息並彙總。
2、要求
主機和從機處於一個局域網內,master
主機中jmeter.properties
中修改文件,這裏的主機也當作一個從機
remote_hosts=127.0.0.1:1888,9.9.15.192:1888
server_port=1888
server.rmi.localport = 1888
slave
從機中修改:
remote_hosts=127.0.0.1
server_port=1888
server.rmi.localport=1888
主機從機同時啓動jmeter-server.bat
,主機啓動jmeter.bat
,啓動jmeter
服務,點擊運行
查看結果樹,從機的信息會彙總到主機中查看,這裏是沒有詳細信息:
補充:阿里雲開發接口
1、阿里雲部署jdk
環境
1、阿里雲Centos
服務器安裝jdk
環境,參考騰訊實驗室:https://cloud.tencent.com/developer/labs/lab/10035
2、上傳spring-boot
文件到usr/local/app
目錄下,運行該文件:java -jar gs-spring-boot-0.1.0.jar
3、訪問接口地址ip:8080/users
,(注意阿里雲需要到安全組打開TCP/8080端口)
4、上傳apache-jmeter-4.0.tgz
至服務器目錄/usr/local/jmeter
,解壓tar zxvf apache-jmeter-4.0.tgz
2、jmeter
非GUI
界面使用
1、操作指令:
2、使用本地jmeter
編寫測試腳本(服務器三接口要開啓,ip
地址是外網或者內網ip
),保存文件上傳至/usr/local/jmeter/temp
目錄。
3、切換到服務器中jmeter
的bin
目錄下,執行測試腳本,./jmeter -n -t /usr/local/jmeter/temp/user_info_api.jmx -l /usr/local/jmeter/temp/result.jtl
常用測試腳本命令
jmeter -n -t linux_users_api.jmx -l result.jtl -e -o /usr/local/softwate/jmeter/temp/ResultReport
jmeter -n -t /Users/jack/Desktop/linux_users_api.jmx -l result.jtl -e -o /Users/jack/Desktop/person/jmeter/temp
4、xftp
下載結果報告result.jtl
,在jmeter
中新建一個summary report
,瀏覽打開報告
3、jmeter
壓測優化優化(-l 禁用已有的測試報告)
- 使用非
GUI
模式:jmeter -n -t test.jmx -l result.jtl
- 少使用
Listener
, 如果使用-l
參數,它們都可以被刪除或禁用。(禁用觀察樹) - 在加載測試期間不要使用“查看結果樹”或“查看結果”表監聽器,只能在腳本階段使用它們來調試腳本。
- 包含控制器在這裏沒有幫助,因爲它將文件中的所有測試元素添加到測試計劃中。
- 不要使用功能模式,使用
CSV
輸出而不是XML
- 只保存你需要的數據,儘可能少地使用斷言
- 如果測試需要大量數據,可以提前準備好測試數據放到數據文件中,以
CSV Read
方式讀取。 - 用內網壓測,減少其他帶寬影響壓測結果
- 如果壓測大流量,儘量用多幾個節點以非
GUI
模式向服務器施壓
官方推薦:http://jakarta.apache.org/jmeter/usermanual/best-practices.html#lean_mean
jmtere
壓測結果轉換爲Html
報表(-l,生成對應報告地址,同時也是防止報錯(禁用監聽器))
jmeter -n -t /usr/local/software/jmeter/temp/linux_users_api.jmx -l /usr/local/software/jmeter/temp/jtl/result.jtl -e -o /usr/local/software/jmeter/temp/result
1、做8萬次,查看報告
得到一個html
報告,下載到本地後打開,首先表格裏面可以看到
其中詳細數據意義:
lable:sampler採樣器名稱
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:每秒發送的數據量
報表裏面可以看到:
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
:響應時間分佈圖