sb 测压工具你知多少?

702 阅读5分钟

sb 测压工具你知多少?

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

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

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

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

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

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

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

github 地址:github.com/aliostad/Su…

如果你是 windows 用户的话,

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

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

img

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

img

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

img

你可能像下图一样:

img

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

img

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

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

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

如果打不开,可以复制这个链接:blog.csdn.net/qq_17623363…

推荐看一下,一定会对你有帮助的。

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

img

要记得保存!

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

现在就可以做到了。

img

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

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

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

img

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

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

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

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

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