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 文件
例如:我下载好,就放在了 D 盘下的 soft 目录下的 utils 目录下了:
当你打开 cmd,运行 sb 命令的时候,发现并不能像他人一样直接运行此命令。
你可能像下图一样:
1、你可以到这个你下载 sb.exe 的目录下去运行
可见,上面这种办法太笨了,而且当这个窗口关闭的时候,还需要去到这个目录下在可以。
当然了,打开 cmd 的姿势有很多种。
例如,我以前总结的:分享几个正确打开 CMD 的姿势,你知道几种?别人问你别再说不知道了,程序猿就要有程序猿的样子
如果打不开,可以复制这个链接:blog.csdn.net/qq_17623363…
推荐看一下,一定会对你有帮助的。
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,以及内存的使用状况,甚至可以用性能监视器拉些数值来看。