eth-btc-1000rps.json
Overview
The `eth-btc-1000rps.json` file is a structured JSON document containing detailed performance metrics and configuration options related to a high-throughput load testing scenario with a target of 1000 requests per second (RPS). This file appears to be an output or result report generated by a performance/load testing tool (likely k6 or a similar HTTP load testing framework), focused on testing HTTP request performance and reliability under heavy load conditions.
The file encapsulates:
Test metadata and environment state.
Performance and reliability metrics related to HTTP requests.
Aggregated statistical summaries such as averages, percentiles, and counts.
Threshold-based pass/fail criteria.
Runtime options influencing report generation and display.
This data is crucial for analyzing the system's behavior under stress, identifying bottlenecks, and ensuring service-level agreements (SLAs) are met.
Detailed Explanation of the File Structure
The JSON is organized into four main sections:
1. root_group
Purpose: Represents the root or top-level grouping for the test scenario. It seems to be a placeholder or container for groups and checks related to the test but is empty in this file.
Properties:
path (string): Path identifier, empty here.
id(string): A unique hash identifier.groups(array): Nested groups inside this root, empty here.checks(array): Validation checks in the group, empty here.name(string): Name of the group, empty here.
2. options
Purpose: Contains configuration options that influence test result reporting and formatting.
Properties:
summaryTrendStats (array): List of statistical metrics calculated and reported for trends.
Examples:
"avg","min","med","max","p(90)","p(95)","p(99)","count".
summaryTimeUnit (string): Unit for time metrics in summary, empty here indicating default or unspecified.
noColor(boolean): Whether to disable color in output display;falsemeans colors are enabled.
3. state
Purpose: Captures the runtime environment and duration of the test.
Properties:
isStdOutTTY(boolean): Whether standard output is a terminal (true here).isStdErrTTY(boolean): Whether standard error is a terminal (true here).testRunDurationMs (number): Duration of the load test in milliseconds (~300 seconds).
4. metrics
Purpose: The core section containing detailed metrics gathered during the load test. Each metric has a unique name and includes:
type: Metric type such asrate,trend,counter, orgauge.contains: Category of metric (e.g.,"time","default","data").values: Statistical data associated with the metric.thresholds(optional): Pass/fail criteria with booleanokflags.
Explanation of Key Metrics
Metric Name | Type | Description |
|---|---|---|
`http_req_failed` | rate | Rate of failed HTTP requests (fail/pass counts and rate). |
`http_req_duration` | trend | Duration of HTTP requests including min, median, max, average, and percentiles. |
`http_req_duration{expected_response:true}` | trend | Duration filtered for requests receiving expected responses. |
`http_req_duration{scenario:rps}` | trend | Duration of requests within the RPS scenario, with threshold on 95th percentile. |
`http_req_connecting` | trend | Time spent establishing TCP connections. |
`http_req_blocked` | trend | Time HTTP requests were blocked (waiting for a network resource). |
`http_req_sending` | trend | Time spent sending HTTP requests. |
`http_req_receiving` | trend | Time spent receiving HTTP responses. |
`http_req_tls_handshaking` | trend | Time spent performing TLS handshakes (SSL negotiation). |
`iterations` | counter | The count and rate of test iterations executed. |
`dropped_iterations` | counter | The count and rate of iterations dropped or skipped. |
`http_reqs` | counter | Total number of HTTP requests made. |
`vus` | gauge | Current number of virtual users active during the test. |
`vus_max` | gauge | Maximum number of virtual users during the test. |
`data_sent` | counter | Total bytes sent during the test and the rate. |
`data_received` | counter | Total bytes received during the test and the rate. |
`iteration_duration` | trend | Duration of each iteration cycle. |
Important Implementation Details and Algorithms
Statistical Summaries: The metrics include various statistical summaries such as average (
avg), minimum (min), median (med), maximum (max), and several percentiles (p(90),p(95),p(99)). These are standard in performance testing to understand distribution and outliers.Thresholds: Some metrics have thresholds indicating pass/fail conditions, e.g.,
"p(95) < 800"forhttp_req_duration{scenario:rps}which is marked as failed (ok: false), highlighting performance issues.Rate and Counter Types: Rate metrics express ratios (e.g., failure rates), counters track discrete counts over time, and gauges represent instantaneous values.
Categorization by Labels: Metrics use label-like syntax to specify subsets, e.g.,
{scenario:rps},{status:200}, or{expected_response:true}, enabling fine-grained analysis.
Usage Examples
This file is primarily consumed by the load testing analysis tools or CI/CD pipelines to:
Evaluate test results: Automatically check if performance thresholds are met.
Generate reports: Visualize trends and statistics for stakeholders.
Debug performance issues: Identify slow requests or frequent failures.
**Example:**
To analyze the 95th percentile request duration for the RPS scenario:
{
"metric": "http_req_duration{scenario:rps}",
"p(95)": 2438.29,
"threshold_passed": false
}
This indicates that 5% of requests took longer than ~2438 ms, exceeding the 800 ms threshold, signaling a performance bottleneck.
Interaction with Other System Components
Load Testing Framework: The file is output by the testing tool after executing a test script or scenario, which simulates HTTP load against target services (likely Ethereum/Bitcoin APIs or endpoints, inferred from the file name).
CI/CD Pipelines: Automated testing pipelines might ingest this JSON to gate deployments based on performance.
Monitoring and Alerting Systems: Post-processing scripts or dashboards can use this data for alerts or historical tracking.
Performance Dashboards: Visual tools can parse and display this data for real-time or historical analysis.
Visual Diagram: Metrics Structure Flowchart
flowchart TD
A[Start: Test Run] --> B[root_group]
B --> C[options]
B --> D[state]
B --> E[metrics]
E --> E1[http_req_failed (rate)]
E --> E2[http_req_duration (trend)]
E --> E3[http_req_connecting (trend)]
E --> E4[dropped_iterations (counter)]
E --> E5[iterations (counter)]
E --> E6[vus (gauge)]
E --> E7[data_sent (counter)]
E --> E8[data_received (counter)]
E --> E9[http_req_tls_handshaking (trend)]
E --> E10[http_req_blocked (trend)]
E --> E11[http_req_sending (trend)]
E --> E12[http_req_receiving (trend)]
E --> E13[http_req_duration{scenario:rps} (trend with thresholds)]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:1px
style C fill:#ccf,stroke:#333,stroke-width:1px
style D fill:#ccf,stroke:#333,stroke-width:1px
style E fill:#bbf,stroke:#333,stroke-width:1px
style E1 fill:#aaf,stroke:#333
style E13 fill:#faa,stroke:#333,stroke-width:2px
Summary
The `eth-btc-1000rps.json` file is a comprehensive metric report from a high-volume HTTP load test. It captures detailed timing, count, and rate statistics critical for analyzing the performance and reliability of web endpoints under stress. The file is structured to support automated threshold checking and detailed trend analysis, making it an essential artifact for performance engineers and DevOps teams focused on maintaining robust, scalable services in cryptocurrency or financial API domains.