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/SuperBenchmarkercd 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql文献综述_文献综述随笔(二十)

一、基本信息标题:中小型酒店管理系统的设计与实现时间:2013来源:厦门大学关键词:MVC;B/S;JAVA EE;JSP;MySQL;瀑布开发模型二、研究内容1.主要内容:系统业务需求、功能需求、系统架构设计、数据库设计1.1功能模块设计&…

五分钟完成 ABP vNext 通讯录 App 开发

ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计。Abp 目前无疑是 ASP.NET Core 开发框架中最先进和最优雅的存在。笔者认为&…

mysql 5.74安装教程_MySQL安装、基本账户安全(5.0以后版本)

-----------MySQL 5.0以后版本的安装-----------MySQL安装安装包学习的必杀绝技——就是阅读包的安装说明(readme & install)文档。----------# rm /etc/my.cnf (安装前执行一下)----------1.Mysql-5.0.40.tar.gz1.1.Source Installation Overview(lines 74 of …

使用GUI工具Portainer.io管控Docker容器

背景5年前容器技术扑面而来,如今已经成为面向云原生开发的基础架构,基于微服务的设计需要部署大量容器,同时强调了友好快速的管理容器。是时候推荐一个轮子Portainer.io:提供GUI界面的容器管理工具,给开发者的工具箱又…

【项目升级】集成Quartz.Net Job实现(一)

这两天的新闻也是越来越多了,不仅Github接手了NPM,还有.NET 5也要新鲜出炉了(11月正式发布),当然还有MVP峰会也正在如火如荼的展开,会有哪些好的东西被碰撞出来,也是很期待的。这些天我也简单的…

DevC++如何安装自定义头文件并使用

首先我们打开DevC,然后点击新建。 新建一个控制台应用程序 取一个喜欢的文件名。 然后会出现如下界面。 点击新建单元 将头文件源码放入 找到空白位置,右键,然后点关闭并保存 保存的文件名要为头文件的名字 使用这个头文件时,只…

论ORM之EFCore初篇(快速基于本地数据库实现数据操作)

欢迎大家阅读《朝夕Net社区技术专刊》第6期我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦!前言:今天准备带大家一站…

C++变量的初始化问题及列表初始化

在C中,初始化是一个异常复杂的问题,很多人认为初始化是赋值的一种,事实上,初始化和赋值是两个完全不同的操作。 列表初始化 要定义一个名为haif的int变量并初始化为0,以下4条语句都可以做到。 int haif 0; int hai…

c++ set 遍历_47. Set 是如何工作的(3) 遍历顺序是如何确定的?

Set 是无序容器,它的插入顺序与迭代(或者 print)输出的顺序不保证与插入顺序一致,与 Dict 类似的问题,Set 的输出顺序是如何决定的呢?首先我们从 Set 的输出开始寻找蛛丝马迹,在 Dict 的研究中&…

跟着“土牛”学架构知识

这里的土牛是指abp的作者,土耳其人,简称“土牛”,前两天看了他分享的ppt,这里做个小笔记。架构分层图一(abp作者)图二(clean架构)图三(在朋友圈看到的)每种架…

《C++ Primer》2.6.1节练习

练习2.39: 在类体花括号后加一个分号就好了。 练习2.40: 代码如下: struct Sales_data{std::string bookNo;//书籍编号unsigned units_sold 0;//销售量double sellingprice 0.0;//零售价double saleprice 0.0//实售价double discount 0…

Cef mysql.exe_CEF3.2623使用记录:windows编译

CEF3.2623使用记录:windows编译1:cef3.2623下载地址2623是cef3最后一个支持xp系统的版本,且可以支持html的audio标签,可以用作对html音频的处理下载地址为 https://bitbucket.org/chromiumembedded/cef/branch/2623。下载win32版本…

Asp.Net Core 中IdentityServer4 授权流程及刷新Token

一、前言上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的授权流程及refreshtoken。系列文章目录(没看过的先看这几篇文章再来…

C++关于const限定符,这一篇足够!!!

C关于const限定符,这一篇足够!!!const限定符初始化和constconst引用初始化和对const的引用对const的引用可能引用一个并非const对象指针和constconst指针顶层constconst限定符 有时候我们希望定义这样一种变量,它的值不能被改变。…

liunx版mysql服务无法启动_linux环境下mysql无法启动

无论发现怎样的问题,首先查看err日志。问题一:查询err日志显示权限问题。分析:mysql原本是所属mysql用户,如果在root用户下启动就有可能出现问题。解决:(1)查看mysql的权限(2)发现有root权限,混乱了。所以先…

玩转控件:重写/重绘Dev中MessageBox弹窗控件

很久没有更新博客了,本想着直接发一篇《手撕ERP》系列,从控件重写、重绘,到框架搭建,再到部分模块实现业务的。但是每次动手的时候,都觉得难以下手。直接从数据库设计开始吧,模块设计还没定下来&#xff0c…

.NET Core开发实战(第26课:工程结构概览:定义应用分层及依赖关系)--学习笔记...

26 | 工程结构概览:定义应用分层及依赖关系从这一节开始进入微服务实战部分这一节主要讲解工程的结构和应用的分层在应用的分层这里定义了四个层次:1、领域模型层2、基础设施层3、应用层4、共享层可以通过代码来看一下源码链接:https://githu…

容器网络是如何影响Kubernetes中数据库性能的?

关于Kubernetes中的数据库,大家最关心的第一个问题是性能。由于这种担心的存在,许多使用Kubernetes进行生产应用程序工作的客户正在Kubernetes之外的裸机或VM上运行数据库。因此,我们致力于深入研究Kubernetes抽象层,确定值得测试…

mysql php状态函数_mysql_stat()查询MySQL服务器当前系统状态

mysql教程:mysql_stat()查询MySQL服务器当前系统状态 定义和用法 mysql_stat() 函数返回 MySQL 服务器的当前系统状态。 如果成功,则该函数返回状态。如果失败,则返回 false。 语法 mysql_stat(connection)参数 描述 connection 可mysql教程&…

聊聊面试的事(应聘方)

这里是Z哥的个人公众号每周五11:45 按时送达当然了,也会时不时加个餐~我的第「134」篇原创敬上原本春节长假之后会有不少人开始新的面试之旅。但是疫情的到来打乱了这个节奏,包括招聘方的计划。因此,在以往是金三银四的…