1

While I'm doing load testing of the golang api there is a report is generated but I don't know what is it and how to read it:-

I run the command in terminal

echo "GET http://localhost:8080/api" | vegeta attack -rate=100/m | vegeta report

then it will produce a below 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:

or when I run the echo "GET http://localhost:8080/api" | vegeta attack -rate=100/m | vegeta report -type=json

then the report generated in json format like below:-

{"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":[]}

How to understand this report. Is there any document for this or anybody knows about it?

misha
  • 139
  • 1
  • 3
  • 14

1 Answers1

2

Let's understand it line by line

Requests [total, rate] 138, 1.68

This line prints the total number of requests fired in the session (138) along with the rate per second (1.8 requests per second)

Duration [total, attack, wait] 1m22.20931745s, 1m22.200130205s, 9.187245ms

Total Duration of the attack which should be sum of time spent in requests and time spent in waiting for response

Latencies [mean, 50, 95, 99, max] 8.956174ms, 9.06458ms, 10.682252ms, 16.007578ms, 46.439935ms

This is simple and most useful : mean latency in milliseconds, 50th percentile, 95th percentile and 99th percile latency along with the request which took max latency 99th percentile latency would mean 99% of responses were served within this time Depending on your product, you should consider 95th or 99th as the real number to improve

Bytes In [total, mean] 19596, 142.00

Total bytes received for all response as well as the mean bytes per response

Bytes Out [total, mean] 0, 0.00

Total bytes sent for all requests as well as the mean bytes per request. Since you are using GET which does not contain any payload it is 0 for you

Success [ratio] 100.00%

Success percentage : 100% of your requests were successful

Status Codes [code:count] 200:138

Status code division by response code: In your case all 138 requests responded with 200 response

Error Set:

Error code division: If there were any errors 400/500s , it would be reported here. This is empty as you have 100% success rate

rajeshnair
  • 1,587
  • 16
  • 32
  • when we write the command of `vegeta report -type=json` then only latencies result come can you explain it little more for json – misha Oct 17 '18 at 03:32
  • @misha , the json report is same if you see the latencies contain the same fields except the additional field of total; [total,mean,50,90,99 ,max]. Total means the total time spent for all requests – rajeshnair Oct 17 '18 at 09:39