1

当我对 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":[]}

如何理解这份报告。是否有任何文件或任何人知道它?

4

1 回答 1

1

让我们逐行理解

请求 [总数,比率] 138, 1.68

此行打印会话中触发的请求总数(138)以及每秒速率(每秒 1.8 个请求)

持续时间[总、攻击、等待] 1m22.20931745s, 1m22.200130205s, 9.187245ms

攻击的总持续时间,应该是请求所花费的时间和等待响应所花费的时间之和

延迟 [平均, 50, 95, 99, 最大值] 8.956174ms, 9.06458ms, 10.682252ms, 16.007578ms, 46.439935ms

这很简单且最有用:平均延迟(以毫秒为单位)、第 50 个百分位、第 95 个百分位和第 99 个百分位延迟以及最大延迟的请求 第 99 个百分位延迟意味着 99% 的响应在这段时间内得到处理 根据您的产品,您应该将第 95 或第 99 视为要改进的实数

字节数 [total, mean] 19596, 142.00

所有响应接收的总字节数以及每个响应的平均字节数

字节输出 [total, mean] 0, 0.00

为所有请求发送的总字节数以及每个请求的平均字节数。由于您使用的 GET 不包含任何有效负载,因此对您来说它是 0

成功[比率] 100.00%

成功百分比:100% 的请求成功

状态码 [code:count] 200:138

按响应代码划分的状态代码:在您的情况下,所有 138 个请求都以 200 个响应响应

错误集:

错误码划分:如果有错误 400/500s ,会在此处报告。这是空的,因为您有 100% 的成功率

于 2018-10-16T15:02:09.917 回答