SuperBenchmarker一個用.NET編寫的壓測工具

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章