result-indexer-scaled-1-500rps.json
Overview
The `result-indexer-scaled-1-500rps.json` file contains a detailed snapshot of performance test results and metrics collected during a load test run conducted at a scale of approximately 500 requests per second (RPS). This JSON-formatted data represents aggregated statistics on HTTP requests, timing metrics, virtual user (VU) counts, and other relevant counters gathered over a test duration of about 300 seconds (5 minutes).
The main purpose of this file is to serve as an index or summary output from a performance testing tool (likely k6 or a similar load testing framework), which can be used for:
Analyzing the performance characteristics of the tested system under load.
Identifying bottlenecks or failures in HTTP request handling.
Tracking throughput, latency, and error rates.
Feeding into dashboards or automated reporting pipelines.
Detailed Explanation of File Structure and Contents
This file is a JSON object with the following top-level keys:
1. root_group
Type: Object
Description: Represents the root grouping of test checks and subgroups. In this file, it is empty, indicating no nested groups or checks were defined or recorded.
Properties:
name: Empty string.path: Empty string.id: A static hash string.groups: Empty array.checks: Empty array.
2. options
Type: Object
Description: Configuration options related to how the summary statistics were generated.
Properties:
summaryTrendStats: An array of statistics computed for trend metrics, including average, min, median, max, and percentiles (90th, 95th, 99th), plus count.summaryTimeUnit: Empty string, implying default time unit usage.noColor: Boolean flag indicating whether color output is disabled in reports (false here).
3. state
Type: Object
Description: Metadata about the runtime environment of the test.
Properties:
isStdOutTTY: Boolean indicating if standard output is a TTY (true).isStdErrTTY: Boolean indicating if standard error is a TTY (true).testRunDurationMs: Total duration of the test run in milliseconds (~300,458 ms).
4. metrics
Type: Object
Description: The core content of the file. Contains multiple performance metrics recorded during the load test, each keyed by metric name.
Structure and Common Fields:
Each metric is an object that typically contains some or all of the following:
type: The metric type, such as"trend","rate","counter", or"gauge".contains: Descriptive tag indicating the kind of data (e.g.,"time","default","data").values: An object containing aggregated statistical values. For trend metrics, this includes:avg: Average value.min: Minimum observed value.med: Median value.max: Maximum value.p(90),p(95),p(99): Percentile values.count: Number of samples.
thresholds: Optional object indicating pass/fail status of thresholds applied to the metric.
Key Metrics Explained
Metric Name | Type | Description |
|---|---|---|
`iteration_duration` | trend | Duration of each iteration of the test script (in milliseconds). |
`http_req_duration` | trend | Total duration of HTTP requests including all phases (connect, send, wait, receive). |
`http_req_duration{expected_response}` | trend | Duration for HTTP requests that returned expected responses. |
`http_req_duration{status:200}` | trend | Duration of HTTP requests with HTTP status 200 (success). |
`http_req_duration{scenario:rps}` | trend | HTTP request durations filtered by scenario "rps". |
`http_req_tls_handshaking` | trend | Time spent in TLS handshake during requests. |
`http_req_failed` | rate | Rate of failed HTTP requests (passes = 0, fails = total requests). |
`http_req_connecting` | trend | Time spent establishing TCP connections. |
`http_req_sending` | trend | Time spent sending HTTP request bytes. |
`http_req_waiting` | trend | Time spent waiting for response (TTFB - Time to First Byte). |
`http_req_receiving` | trend | Time spent receiving HTTP response bytes. |
`data_sent` | counter | Total amount of data sent over the network (in bytes). |
`data_received` | counter | Total amount of data received over the network (in bytes). |
`http_reqs` | counter | Total number of HTTP requests sent. |
`iterations` | counter | Total iterations executed (script loop cycles). |
`vus` | gauge | Virtual users currently active during the test. |
`vus_max` | gauge | Maximum number of virtual users active during the test. |
Important Implementation Details and Algorithms
This file is a summary output from a load testing tool, likely generated automatically.
The metrics use statistical aggregation algorithms to compute averages, medians, percentiles, and counts from raw timing data collected during the test.
Percentiles (90th, 95th, 99th) are calculated to understand latency distribution and tail latency behavior.
Metrics of type
"rate"represent ratios or probabilities (e.g., failure rate).Counters represent monotonic increasing values, such as total bytes sent or requests made.
The
thresholdsfield defines pass/fail criteria to automatically mark performance goals as met or violated.The state section gives context about the runtime environment, useful for debugging.
Interaction with Other System Components
This JSON file is typically generated by the performance testing execution engine after or during a test run.
It can be consumed by reporting modules or dashboard visualizers to present data to users or engineers.
It may be ingested by continuous integration (CI) pipelines to validate performance regressions.
The file links to no other files directly but is part of a broader performance testing and monitoring workflow.
The metrics here may correlate with logs or traces collected from the system under test for root cause analysis.
Usage Example
Suppose you want to analyze the median HTTP request duration from this file:
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('result-indexer-scaled-1-500rps.json'));
const medianHttpReqDuration = data.metrics['http_req_duration'].values.med;
console.log(`Median HTTP Request Duration: ${medianHttpReqDuration} ms`);
This can be used to validate if the median latency meets SLA requirements.
Visual Diagram: Metrics Structure Flowchart
flowchart TD
A[Metrics] --> B[Trend Metrics]
A --> C[Rate Metrics]
A --> D[Counter Metrics]
A --> E[Gauge Metrics]
B --> B1[http_req_duration]
B --> B2[iteration_duration]
B --> B3[http_req_tls_handshaking]
B --> B4[http_req_connecting]
B --> B5[http_req_sending]
B --> B6[http_req_waiting]
B --> B7[http_req_receiving]
B --> B8[http_req_duration{status:200}]
B --> B9[http_req_duration{scenario:rps}]
B --> B10[http_req_duration{expected_response:true}]
B --> B11[http_req_blocked]
C --> C1[http_req_failed]
C --> C2[http_req_failed{scenario:rps}]
D --> D1[data_sent]
D --> D2[data_received]
D --> D3[http_reqs]
D --> D4[iterations]
E --> E1[vus]
E --> E2[vus_max]
**Diagram Explanation:**
The root node is Metrics, categorizing all recorded metrics.
Metrics are grouped by their types: Trend, Rate, Counter, and Gauge.
Each metric node represents a specific metric captured in the file.
This flowchart highlights the classification of metrics and their relationships to the overall performance data.
Summary
The `result-indexer-scaled-1-500rps.json` file is a comprehensive performance testing result snapshot. It captures detailed timing and count-based metrics aggregated during a high-throughput HTTP load test. The data supports performance analysis, monitoring, and threshold-based validation and integrates into larger testing and reporting workflows. The structured metric types (trends, rates, counters, gauges) provide a rich set of insights into different aspects of system performance under load.