欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SuperBenchmarker一个用.NET编写的压测工具

程序员文章站 2024-02-03 10:25:10
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 参数

SuperBenchmarker一个用.NET编写的压测工具

  • -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

如下所示:

SuperBenchmarker一个用.NET编写的压测工具

通过如下结果图我们可以看到吞吐率(rps)和总请求数量(requests)、最大处理时长、最小处理时长、平均时长等信息

SuperBenchmarker一个用.NET编写的压测工具

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