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:
state: Runtime state metadata about the test environment.
metrics: A dictionary of performance metrics with statistical summaries.
root_group: Represents the root test group (empty in this report).
options: Configuration details related to the summary and output formatting.
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:
type: The metric type (trend,counter,gauge,rate).contains: What the metric measures (e.g.,timeordefault).values: Statistical values such as min, max, average, percentiles, counts, rates.Optional:
thresholdsspecifying pass/fail conditions for certain metrics.
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
Metric Types:
Trend: Measures time or duration metrics with percentile distributions.
Counter: Counts occurrences or quantities (e.g., requests, bytes).
Gauge: Instantaneous values like current VUs.
Rate: Ratio of successes/failures or event rates over time.
Percentiles: The report includes 90th, 95th, and 99th percentiles to capture latency distribution tails.
Data Volume: Data sent and received counters capture throughput in bytes, useful for bandwidth analysis.
Dropped Iterations: Indicates test overload situations where iterations could not complete.
Thresholds: Allow automated pass/fail determination for critical performance criteria.
Interaction with Other System Components
This JSON report is typically generated by a load testing tool running scripted scenarios against the Traefik reverse proxy/load balancer environment.
The metrics reflect interaction with the system under test (SUT), which is Traefik scaled to handle 500 requests per second.
Downstream components (e.g., backend services) are indirectly represented by the latency and failure rates.
This file serves as an input for reporting dashboards, CI/CD pipelines, or automated quality gates to evaluate system performance.
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
This file is a performance test result report capturing detailed timing, throughput, and reliability metrics for a load test against Traefik at ~500 RPS.
It documents key performance indicators critical for system capacity planning and tuning.
The metrics include granular timing breakdowns, user concurrency, data volumes, and pass/fail thresholds.
The report is generated by the testing framework and consumed by developers, QA, and performance engineers.
Its structured format supports automated analysis and integration into performance dashboards or CI workflows.
*End of documentation for* `result-traefik-scaled-500rps.json`.