SuperBenchmarker一個用.NET編寫的壓測工具
阿新 • • 發佈:2020-03-09
> ## 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 安裝
我們可以直接拉取原始碼進行構建
```bash
git clone https://github.com/aliostad/SuperBenchmarker
cd SuperBenchmarker
./build.sh
```
> ## 0x03 引數
![](https://imgkr.cn-bj.ufileos.com/889e974c-6d88-4c95-a069-601087810599.png)
- -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 執行
```bash
dotnet ./src/SuperBenchmarker/bin/Debug/netcoreapp2.0/SuperBenchmarker.dll -u https://baidu.com -N 10
```
如下所示:
![](https://imgkr.cn-bj.ufileos.com/e012e132-5de2-4499-919b-1ef85edffbc2.png)
通過如下結果圖我們可以看到吞吐率(RPS)和總請求數量(requests)、最大處理時長、最小處理時長、平均時長等資訊
![](https://imgkr.cn-bj.ufileos.com/78595097-4347-4835-8672-77c9f0d104b3.png)
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/11059