result-traefik-scaled-500rps.json


Overview

The `result-traefik-scaled-500rps.json` file is a structured JSON report derived from a performance testing tool, likely k6 or a similar load testing framework. It captures detailed statistical metrics and runtime state information from a load test scenario simulating approximately 500 requests per second (RPS) against a Traefik-based system under scaled load conditions.

This file's primary purpose is to provide comprehensive quantitative insights into various HTTP request lifecycle phases, virtual user (VU) behavior, iteration performance, and overall system throughput. The data enables performance engineers and developers to analyze system responsiveness, stability, and bottlenecks during high concurrency scenarios.


File Structure and Content Description

The JSON file contains the following top-level keys:


Detailed Breakdown

1. state

Describes the test runtime environment characteristics and duration.

Property

Type

Description

`isStdErrTTY`

boolean

Indicates if standard error output is a TTY (terminal).

`testRunDurationMs`

float

Duration of the test run in milliseconds.

`isStdOutTTY`

boolean

Indicates if standard output is a TTY.

**Example:**

"state": {
    "isStdErrTTY": true,
    "testRunDurationMs": 307648.347731,
    "isStdOutTTY": true
}

2. metrics

The core section holding detailed performance metrics, each keyed by a metric name. Each metric includes:

Key Metrics Explained:

Metric Name

Type

Description

`http_req_duration`

trend

Overall latency of HTTP requests, including all phases (connect, send, wait, receive).

`http_req_sending`

trend

Time spent sending the HTTP request to the server.

`http_req_tls_handshaking`

trend

Time spent performing TLS handshakes during connection setup.

`http_req_blocked`

trend

Time spent blocked before a request could be sent (e.g., waiting for a connection slot).

`http_req_connecting`

trend

Time spent establishing TCP connections.

`http_req_waiting`

trend

Time spent waiting for the server to respond (TTFB - Time To First Byte).

`http_req_receiving`

trend

Time spent receiving the response from the server.

`http_reqs`

counter

Total count and rate of HTTP requests sent during the test.

`iterations`

counter

Number and rate of test iterations executed.

`dropped_iterations`

counter

Number and rate of iterations dropped due to system saturation or errors.

`vus`

gauge

Current number of virtual users (VUs) active during the test.

`vus_max`

gauge

Maximum number of virtual users reached.

`data_sent`

counter

Amount of data sent (in bytes).

`data_received`

counter

Amount of data received (in bytes).

`http_req_failed`

rate

Rate of failed HTTP requests.

Example Metric (http_req_duration):

"http_req_duration": {
    "type": "trend",
    "contains": "time",
    "values": {
        "max": 16359.399173,
        "p(90)": 615.3413514000013,
        "p(95)": 1384.6292214499992,
        "p(99)": 3772.292048309998,
        "count": 147768,
        "avg": 370.6355802440384,
        "min": 124.552353,
        "med": 178.63230149999998
    }
}

This shows, for example, that out of 147,768 requests, the average duration was approximately 370 ms, with the 95th percentile at ~1384 ms.

Thresholds

Some metrics include thresholds, which are pass/fail criteria for test validation.

Example:

"http_req_duration{scenario:rps}": {
    ...
    "thresholds": {
        "p(95) < 800": {
            "ok": false
        }
    }
}

This indicates that the 95th percentile duration threshold of 800 ms was not met (test failed this threshold).


3. root_group

Represents the root group of the test scenario. Here it is essentially empty.

Property

Type

Description

`name`

string

Group name (empty here)

`path`

string

Group path (empty here)

`id`

string

Unique identifier (hash)

`groups`

array

Sub-groups (empty here)

`checks`

array

Checks or assertions (empty here)


4. options

Settings controlling output formatting.

Property

Type

Description

`summaryTimeUnit`

string

Unit for time summaries (empty means default).

`noColor`

boolean

Whether to disable colored output (false here).

`summaryTrendStats`

array

List of statistics included in trend summaries.

Example:

"options": {
    "summaryTimeUnit": "",
    "noColor": false,
    "summaryTrendStats": [
        "avg",
        "min",
        "med",
        "max",
        "p(90)",
        "p(95)",
        "p(99)",
        "count"
    ]
}

Important Implementation Details


Interaction with Other System Components


Usage Examples

Parsing in Performance Analysis Tool

const fs = require('fs');

const rawData = fs.readFileSync('result-traefik-scaled-500rps.json');
const report = JSON.parse(rawData);

console.log(`Test Duration: ${report.state.testRunDurationMs} ms`);
console.log(`Total HTTP Requests: ${report.metrics.http_reqs.values.count}`);
console.log(`Average HTTP Request Duration: ${report.metrics.http_req_duration.values.avg.toFixed(2)} ms`);

Threshold Check Example

const thresholdPassed = report.metrics['http_req_duration{scenario:rps}'].thresholds["p(95) < 800"].ok;

if (!thresholdPassed) {
    console.warn("Performance threshold for 95th percentile request duration not met.");
}

Mermaid Diagram: Metrics Flowchart

This flowchart illustrates the relationship between main metric categories and their sub-metrics in the file.

flowchart TD
    A[Metrics] --> B[HTTP Request Metrics]
    A --> C[Virtual User Metrics]
    A --> D[Data Transfer Metrics]
    A --> E[Iteration Metrics]
    A --> F[Failure Metrics]

    B --> B1[http_req_duration]
    B --> B2[http_req_sending]
    B --> B3[http_req_tls_handshaking]
    B --> B4[http_req_blocked]
    B --> B5[http_req_connecting]
    B --> B6[http_req_waiting]
    B --> B7[http_req_receiving]
    B --> B8[http_reqs]

    C --> C1[vus]
    C --> C2[vus_max]

    D --> D1[data_sent]
    D --> D2[data_received]

    E --> E1[iterations]
    E --> E2[dropped_iterations]

    F --> F1[http_req_failed]
    F --> F2[http_req_failed{scenario:rps}]

Summary


*End of documentation for* `result-traefik-scaled-500rps.json`.