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

SuperBenchmarker一个用.NET编写的压测工具的更多相关文章

  1. python服务端多进程压测工具

    本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见 ...

  2. 作业2:go实现一个压测工具,具备upload功能

    作业:go实现压测工具,具备upload功能. upload内容是.tar.gz,使用http协议上传. 要求:upload的文件名,http目的地址灵活可配. deadline:2019.4.30

  3. [软件测试]网站压测工具Webbench源码分析

    一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...

  4. 压测工具使用(vegeta)

    一.压测工具vegeta 1.介绍 Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库. 官方地址:https://github.com/tsen ...

  5. wrk压测工具使用

    介绍分为四部分 1.wrk简述 2.wrk安装 3.wrk运行参数 4.wrk高级用法 1.wrk简述 当使用ab做压测的时候发现,ab的客户端消耗很大,而且测试时性能较差,测试redis,sprin ...

  6. 网站(Web)压测工具Webbench源码分析

    一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench ...

  7. 压测工具Locuse的使用

    我是听朋友提起的"蝗虫"(Locust),然而她不想用python,我就拿来试一试~ http的 各种压测工具也已经太多了,所以主要是试试locust在当前比较流行的rpc协议上的 ...

  8. 常用的HTTP服务压测工具介绍

    常用的HTTP服务压测工具介绍 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量.排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资 ...

  9. 3. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardier

    目录 堪比JMeter的.Net压测工具 - Crank 入门篇 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识yml 堪比JMeter的.Net压测工具 - Crank 进阶篇 ...

随机推荐

  1. Glob模块使用笔记

    一.Glob模块介绍 python中的glob模块用于查找文件目录和文件,并返回一个list.常用的方法有glob.glob()和glob.iglob().与os.listdir()都是查找文件,但有 ...

  2. Angular开发者指南(二)概念概述

    template(模板):带有附加标记的模板HTML directives(指令):使用自定义属性和元素扩展HTML model(模型):用户在视图中显示的数据,并与用户进行交互 scope(作用域) ...

  3. Golang os/exec 实现

    os/exec 实现了golang调用shell或者其他OS中已存在的命令的方法. 本文主要是阅读内部实现后的一些总结. 如果要运行ls -rlt,代码如下: package main import ...

  4. 系统学习javaweb重点难点1--如何区分<input/>框里的三种常用属性:type属性 name属性 和 value属性

    感想:这是我系统学习javaweb的时候感觉这个是一个初学者十分容易搞混的点 学习笔记: 首先,是type属性. 表单输入项标签之一,用户可以在该标签上通过填写和选择进行数据输入. type属性设置该 ...

  5. 12款优秀的 JavaScript 日历和时间选择控件

    这些插件能够帮助  Web 开发人员更快速的实现各种精美的日历和时间选择效果. 1. The Coolest Calendar 界面非常漂亮的一款日期选择插件,有详细的使用文档,最新版本 1.5. 点 ...

  6. Freeswitch录音Dialplan

    <extension name="record"> <condition field="destination_number" express ...

  7. HttpClient学习笔记

    HttpClient相关的实体类官方文档地址:http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/ 使用HttpClien ...

  8. 7)加了基础控制器Controller.php

    文件目录展示: 改动代码展示: Controller.php <?php /** * Created by PhpStorm. * User: Interact * Date: 2017/8/2 ...

  9. MOOC(6)- case之间存在依赖

    方法1:这里只给出根据依赖字段去匹配响应结果中的值的函数,其他匹配依赖case,对依赖case发起请求见下面的方法2 方法2: from day_20200208_mooc.tools.do_exce ...

  10. absorb|state|

    ADJ-GRADED 极感兴趣的:专心的:全神贯注的If you are absorbed in something or someone, you are very interested in th ...