0x01 前言 在這之前想必大家對ab(http)與abs(https)也有一些瞭解,我們今天不去看ab和abs, SuperBenchmarker (sb.exe)是一個壓測工具,他是一個受Apache Benchmark的啟發,他會在終端視窗為我們顯示最終的結果,同時也會在web界面生成一個動態 ...
0x01 前言
在這之前想必大家對ab(http)與abs(https)也有一些瞭解,我們今天不去看ab和abs,SuperBenchmarker(sb.exe)是一個壓測工具,他是一個受Apache Benchmark的啟發,他會在終端視窗為我們顯示最終的結果,同時也會在web界面生成一個動態結果。SuperBenchmarker(sb.exe)可以在Windows或者Mac上運行(尚未在Linux上進行測試),他可以安裝在.NET4.52+或者.NET Core2.0+。
0x02 安裝
我們可以直接拉取源代碼進行構建
git clone https://github.com/aliostad/SuperBenchmarker
cd SuperBenchmarker
./build.sh
0x03 參數
- -c --concurrency (Default: 1) 併發請求數
- -n, --numberOfRequests (Default: 100) 請求數量
- -m, --method (Default: GET) HTTP Method
- -u, --url 請求地址,也就是需要壓測的地址
- -v,--verbose:輸出詳細
- -h, --headers:輸出HTTP Header
- -k, --cookies:輸出cookie
- -q, --onlyRequest:僅輸出請求信息
0x04 運行
dotnet ./src/SuperBenchmarker/bin/Debug/netcoreapp2.0/SuperBenchmarker.dll -u https://baidu.com -N 10
如下所示:
通過如下結果圖我們可以看到吞吐率(RPS)和總請求數量(requests)、最大處理時長、最小處理時長、平均時長等信息
TPS吞吐量請求數/請求響應的時間(s) ,即每秒請求數,對應 Request per second
響應時間:請求發送到接受到請求的時間差,單位為ms,一般看90%的響應時間
併發連接數:每秒伺服器端能處理的連接數。併發連接數 = 吞吐量*響應時間
TPS和QPS區別
QPS:Queries Per Second,意思是“每秒查詢率”,是一臺伺服器每秒能夠響應的查詢次數,是對一個特定的查詢伺服器(比如是讀寫分離的架構,就是讀的伺服器)在規定時間內所處理流量多少的衡量標準。
TPS:TransactionsPerSecond,意思是每秒事務數,一個事務是指一個客戶機向伺服器發送請求然後伺服器做出反應的過程。客戶機在發送請求時開始計時,收到伺服器響應後結束計時,以此來計算使用的時間和完成的事務個數。
QPS計算
QPS = req/sec = 請求數/秒
【QPS計算PV和機器的方式】
QPS統計方式 [一般使用 http_load 進行統計]
QPS = 總請求數 / (進程總數 * 請求時間)
QPS: 單個進程每秒請求伺服器的成功次數
單台伺服器每天PV計算
公式1:每天總PV = QPS * 3600 * 6
公式2:每天總PV = QPS * 3600 * 8
伺服器計算
伺服器數量 = ceil(每天總PV / 單台伺服器每天總PV)
【峰值QPS和機器計算公式】
原理:每天80%的訪問集中在20%的時間里,這20%時間叫做峰值時間
公式:(總PV數 * 80%) / (每天秒數 * 20%) = 峰值時間每秒請求數(QPS)
機器:峰值時間每秒QPS / 單台機器的QPS = 需要的機器
問:每天300w PV 的在單台機器上,這台機器需要多少QPS?
答:(3000000 * 0.8) / (86400 * 0.2) = 139 (QPS)
問:如果一臺機器的QPS是58,需要幾台機器來支持?
答:139 / 58 = 3
Reference
https://www.cnblogs.com/Renyi-Fan/p/12040781.html
https://github.com/aliostad/SuperBenchmarker
https://www.cnblogs.com/uncleyong/p/11059556.html