当我对 golang api 进行负载测试时,生成了一个报告,但我不知道它是什么以及如何阅读它:-
我在终端中运行命令
echo "GET http://localhost:8080/api" | vegeta attack -rate=100/m | vegeta report
然后它将生成以下报告:-
Requests [total, rate] 138, 1.68
Duration [total, attack, wait] 1m22.20931745s, 1m22.200130205s, 9.187245ms
Latencies [mean, 50, 95, 99, max] 8.956174ms, 9.06458ms, 10.682252ms, 16.007578ms, 46.439935ms
Bytes In [total, mean] 19596, 142.00
Bytes Out [total, mean] 0, 0.00
Success [ratio] 100.00%
Status Codes [code:count] 200:138
Error Set:
或者当我运行echo "GET http://localhost:8080/api" | vegeta attack -rate=100/m | vegeta report -type=json
然后以 JSON 格式生成的报告如下所示:-
{"latencies:
{"total":103506418,
"mean":9409674,
"50th":9484403,
"95th":11918898,
"99th":12008257,
"max":12008257},
"bytes_in":{"total":1562,"mean":142},
"bytes_out":
{"total":0,"mean":0},
"earliest":"2018-10-16T14:15:13.251091124+05:30",
"latest":"2018-10-16T14:15:19.251141502+05:30",
"end":"2018-10-16T14:15:19.260119671+05:30",
"duration":6000050378,
"wait":8978169,
"requests":11,
"rate":1.8333179401848014,
"success":1,
"status_codes":{"200":11},
"errors":[]}
如何理解这份报告。是否有任何文件或有人知道它?
让我们逐行理解它
请求 [总计,费率] 138, 1.68
此行打印会话中触发的请求总数 (138( 以及每秒速率(每秒 1.8 个请求(
持续时间 [总计、攻击、等待] 1分22秒20931745秒,1分22秒22.200130205秒,9.187245毫秒
攻击的总持续时间,应为请求所花费的时间和等待响应所花费的时间之和
延迟 [平均值, 50, 95, 99, 最大值] 8.956174毫秒, 9.06458毫秒, 10.682252毫秒, 16.007578毫秒, 46.439935毫秒
这是简单且最有用的:以毫秒为单位的平均延迟、第 50 个百分位数、第 95 个百分位数和第 99 个百分位数延迟以及占用最大延迟的请求 第 99 个百分位延迟意味着 99% 的响应在此时间内送达 根据您的产品,您应该考虑第 95 位或第 99 位作为要改进的实数
字节数 [总计,平均值] 19596, 142.00
所有响应接收的总字节数以及每个响应的平均字节数
输出字节数 [总计,平均值] 0, 0.00
为所有请求发送的总字节数以及每个请求的平均字节数。由于您使用的是不包含任何有效负载的 GET,因此对您来说为 0
成功率 [比率] 100.00%
成功百分比:您的请求100%成功
状态代码 [代码:计数] 200:138
状态代码按响应代码划分:在您的案例中,所有 138 个请求都响应了 200 个响应
错误集:
错误代码划分:如果有任何错误 400/500s ,将在此处报告。这是空的,因为您有 100% 的成功率