sb测压工具你知多少?

简介: sb测压工具你知多少?

一、简单介绍

首先sb并不是“傻X”的意思。

其实是SuperBenchmarker的缩写,简称SB。

是一个开源的测压工具,挺好用的。

SuperBenchmarker 是ㄧ个开源的类似于Apache ab的压力测试命令行工具。

可支持Get、Post、Put、Delete这些调用方式,调用时能指定Concurrent user、Request数、Header template…等。

二、如何得到sb工具呢?

最有效的方法无非是通过官方通道进行下载了。

可以通过github的地址下载该程序:

github地址:https://github.com/aliostad/SuperBenchmarker

如果你是windows用户的话,

Github用户可在download目录内取得编译好的程序主文件,

可以在download目录中下载sb.exe文件

例如:我下载好,就放在了D盘下的soft目录下的utils目录下了:

三、如何随心所欲的使用sb工具?

当你打开cmd,运行sb命令的时候,发现并不能像他人一样直接运行此命令。

你可能像下图一样:

1、你可以到这个你下载sb.exe的目录下去运行

可见,上面这种办法太笨了,而且当这个窗口关闭的时候,还需要去到这个目录下在可以。

当然了,打开cmd的姿势有很多种。

例如,我以前总结的:分享几个正确打开CMD的姿势,你知道几种?别人问你别再说不知道了,程序猿就要有程序猿的样子

2、可以配置环境变量,在哪里都可以运行

要记得保存!

保存完,要记得重新打开cmd!!

现在就可以做到了。

四、比较重要的参数

其中比较重要的参数大概有下列几个

  • -u 可用来指定要压测的网站或是API
  • -n 可用来指定要压的Request数量
  • -c 可用来指定Concurrent Request(并发请求)数量
  • -m 可用来指定要使用的HTTP Method
  • -h 可用来指定要显示HTTP Header
  • -q 可用来指定要显示Cookie
  • -N 指定运行的时间

其他的参数:

C:\Users\zhengsu>sb
SuperBenchmarker 4.5.1
Copyright (C) 2020 Ali Kheyrollahi
ERROR(S):
Required option 'u, url' is missing.
  -c, --concurrency            (Default: 1) Number of concurrent requests
  -n, --numberOfRequests       (Default: 100) Total number of requests
  -N, --numberOfSeconds        Number of seconds to run the test. If specified, -n will be ignored.
  -y, --delayInMillisecond     (Default: 0) Delay in millisecond
  -u, --url                    Required. Target URL to call. Can include placeholders.
  -m, --method                 (Default: GET) HTTP Method to use
  -t, --template               Path to request template to use
  -p, --plugin                 Name of the plugin (DLL) to replace placeholders. Should contain one class which
                               implements IValueProvider. Must reside in the same folder.
  -l, --logfile                Path to the log file storing run stats
  -f, --file                   Path to CSV file providing replacement values for the test
  -a, --TSV                    If you provide a tab-separated-file (TSV) with -f option instead of CSV
  -d, --dryRun                 Runs a single dry run request to make sure all is good
  -e, --timedField             Designates a datetime field in data. If set, requests will be sent according to order
                               and timing of records.
  -g, --TlsVersion             Version of TLS used. Accepted values are 0, 1, 2 and 3 for TLS 1.0, TLS 1.1 and TLS 1.2
                               and SSL3, respectively
  -v, --verbose                Provides verbose tracing information
  -b, --tokeniseBody           Tokenise the body
  -k, --cookies                Outputs cookies
  -x, --useProxy               Whether to use default browser proxy. Useful for seeing request/response in Fiddler.
  -q, --onlyRequest            In a dry-run (debug) mode shows only the request.
  -h, --headers                Displays headers for request and response.
  -z, --saveResponses          saves responses in -w parameter or if not provided in\response_<timestamp>
  -w, --responsesFolder        folder to save responses in if and only if -z parameter is set
  -?, --help                   Displays this help.
  -C, --dontcap                Don't Cap to 50 characters when Logging parameters
  -R, --responseRegex          Regex to extract from response. If it has groups, it retrieves the last group.
  -j, --jsonCount              Captures number of elements under the path e.g. root/leaf1/leaf2 finds count of leaf2
                               children - stores in the log as another parameter. If the array is at the root of the
                               JSON, use space: -j ' '
  -W, --warmUpPeriod           (Default: 0) Number of seconds to gradually increase number of concurrent users. Warm-up
                               calls do not affect stats.
  -P, --reportSliceSeconds     (Default: 3) Number of seconds as interval for reporting slices. E.g. if chosen as 5,
                               report charts have 5 second intervals.
  -F, --reportFolder           Name of the folder where report files get stored. By default it is in
                               yyyy-MM-dd_HH-mm-ss.ffffff of the start time.
  -B, --dontBrowseToReports    By default it, sb opens the browser with the report of the running test. If specified,
                               it wil not browse.
  -U, --shuffleData            If specified, shuffles the dataset provided by -f option.
  --help                       Display this help screen.
  --version                    Display version information.
System.Linq.Enumerable+<ExceptIterator>d__73`1[CommandLine.Error]
C:\Users\zhengsu>

五、经典示例

1、如果你想针对你的网站发送40个并发,并且跑30秒,你可以这样做:

sb -u http://127.0.0.1:8888 -c 40 -N 30

例如下面这个我拿www.baidu.com来跑的一次:

d:\soft\utils>sb -u http://www.baidu.com  -c 40 -N 30
Starting at 2020/11/29 23:41:49
[Press C to stop the test]
2087    (RPS: 54.4)
---------------Finished!----------------
Finished at 2020/11/29 23:42:28 (took 00:00:38.5613960)
2116    (RPS: 55.1)                     Status 200:    2116
RPS: 67.9 (requests/second)
Max: 5412ms
Min: 209ms
Avg: 569.7ms
  50%   below 462ms
  60%   below 512ms
  70%   below 602ms
  80%   below 697ms
  90%   below 891ms
  95%   below 1110ms
  98%   below 1754ms
  99%   below 2197ms
99.9%   below 4296ms
2117    (RPS: 55.1)
d:\soft\utils>

跑完之后就可以在浏览器看到结果:

可以看出每秒可处理多少的Request、最大的处理时间、最小的处理时间、平均的处理时间、以及压了这么多次的API,依比例分大概在哪个范围。

这些数值可以帮助我们评估网站或是API的性能与负载量。

除了看这些数据外,还可以利用JVM监控的工具来监控JVM的运行状况等。

最近在研究JVM方便的内容,我有整理JVM相关的几个工具,可以期待一下。

也可以同时监控服务器Server上的CPU Loading,磁盘IO,以及内存的使用状况,甚至可以用性能监视器拉些数值来看。

目录
相关文章
|
6月前
|
自然语言处理 Shell API
如何翻译 Markdown 文件?-1- 难点及解决方案
如何翻译 Markdown 文件?-1- 难点及解决方案
|
6月前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)
【4月更文挑战第5天】本文介绍了Partial Link Text,这是一种用于网页自动化测试的方法,允许部分匹配超链接文本,尤其适用于长链接不便完全输入的情况。为确保准确性,建议选择具有唯一性的字符组合。文章列举了8种常用的定位方法,包括id、name、class name等,并重点讲解了partial link text。实战部分展示了如何通过 PartialLinkText 在百度首页找到并点击“打哭伊藤!孙颖莎:过瘾”这一热搜链接的代码示例。
95 2
|
6月前
|
前端开发 Java 测试技术
《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
【4月更文挑战第4天】本文介绍了link text在自动化测试中的应用。Link text是指网页中链接的文字描述,点击可跳转至其他页面。文章列举了8种常用的定位方法,其中着重讲解了link text定位,并通过实例展示了如何使用Java代码实现点击百度首页的“奥运奖牌榜 最新排名”链接,进入相应页面。如果link text不准确,则无法定位到元素,这说明linkText是精准匹配,而非模糊匹配。文章还提到了partial link text作为link text的模糊匹配版本,将在后续内容中介绍。
108 4
|
3月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
59 1
|
1月前
|
C++
C++番外篇——list的实现
C++番外篇——list的实现
19 0
|
6月前
|
开发者 Python
【亮剑】Python中`List.append()`方法不起作用的原因及解决方案
【4月更文挑战第30天】本文探讨了Python中`List.append()`方法不起作用的原因及解决方案。问题可能源于变量作用域、可变类型与不可变类型混淆、函数内的局部变量、错误的赋值操作或并发修改。解决方法包括检查变量、确保正确操作列表、使用`global`关键字、避免错误赋值和采用同步机制处理并发问题。理解这些问题对于编写健壮的Python代码至关重要。
335 0
|
6月前
|
存储 算法 安全
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法
|
12月前
|
C语言 C++
【C++从0到王者】第十五站:list源码分析及手把手教你写一个list(下)
【C++从0到王者】第十五站:list源码分析及手把手教你写一个list
75 0
|
12月前
|
存储 编译器 C语言
【C++从0到王者】第十五站:list源码分析及手把手教你写一个list(上)
【C++从0到王者】第十五站:list源码分析及手把手教你写一个list
68 0
|
Android开发
libxxx.so- text relocations问题的终极解决方案
问题表现形式 错误或警告日志 当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log: E/linker: /data/app/packagename/lib/arm/libxxx.
3169 0