Add blaster test for endpoint performance evaluation#855
Conversation
# Conflicts: # .github/workflows/load-test.yml # cmd/stellar-rpc/internal/ingest/service.go # cmd/stellar-rpc/internal/integrationtest/ingest_loadtest_test.go # go.mod # go.sum
🧪 Performance Evaluation Test #3Commit: ✅ Apply-load ingestion — verdict: ok📈 Ingest load test —
|
| Profile | Ledgers | ms/ledger | p50 / p95 / p99 ms | max ms |
|---|---|---|---|---|
| load-test-ledgers-v27-oz | 1000 | 1206.737 | 1115.160 / 1648.651 / 1977.222 | 4634.191 |
| load-test-ledgers-v27-sac | 1000 | 1097.183 | 1106.764 / 1179.606 / 1233.021 | 1307.135 |
| load-test-ledgers-v27-soroswap | 1000 | 791.507 | 802.920 / 868.582 / 923.094 | 1030.999 |
| Metric | Value |
|---|---|
| Ledgers replayed | 3000 |
| Initial DB ledger count | 120960 |
| Throughput | 0.94 ledgers/sec |
| Elapsed wall-clock | 3196.746s |
| Ingest busy-time | 3095.426s (96.8% utilization) |
| Per-ledger p50 / p95 / p99 | 1050.728 / 1413.879 / 1843.836 ms |
| Golden DB fetch+decompress | 2430s |
| stellar-core | v27.0.0 |
| Workflow run | #29283375076-1 |
✅ Backfill ingestion — verdict: ok
⏳ Backfill ingestion — c6cd9d492ff1
| Metric | Value |
|---|---|
| Ledgers ingested | 8640 ([63454976 -> 63463615]) |
| Retention window | 8640 |
| Wall-clock | 20m57s |
| Ledgers/sec | 6.9 |
✅ Endpoint load test — verdict: ok
🎯 Endpoint load test — c6cd9d492ff1
Serial blast per endpoint (ramp-up 2m, duration 3m, blaster f6085c38900f) against the backfilled RPC (ledgers [63455276, 63463915], catchup 1458s).
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents (limit=1) | 1 | 82 | 24 (29.3%) | 58.6 | 10010.6 | 10010.6 | 10018.8 |
| getFeeStats | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getHealth | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getLatestLedger | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getLedgerEntries | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getLedgers (limit=1) | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getNetwork | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getTransaction | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getTransactions (limit=1) | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
| getVersionInfo | 0 | 0 | 0 (0.0%) | 0.0 | 0.0 | 0.0 | 0.0 |
Performance Evaluation Test #2
🧪 Performance Evaluation Test #2
Commit: ee0f5cbf53b2 (blaster-test)
Run: https://github.com/stellar/stellar-rpc/actions/runs/29133837755
✅ Apply-load ingestion — verdict: ok
📈 Ingest load test — ee0f5cb
| Profile | Ledgers | ms/ledger | p50 / p95 / p99 ms | max ms |
|---|---|---|---|---|
| load-test-ledgers-v27-oz | 1000 | 1197.033 | 1115.398 / 1629.591 / 1911.283 | 3290.848 |
| load-test-ledgers-v27-sac | 1000 | 1096.878 | 1106.531 / 1177.999 / 1239.813 | 1303.008 |
| load-test-ledgers-v27-soroswap | 1000 | 791.185 | 802.614 / 867.703 / 919.590 | 1035.681 |
| Metric | Value |
|---|---|
| Ledgers replayed | 3000 |
| Initial DB ledger count | 120960 |
| Throughput | 0.94 ledgers/sec |
| Elapsed wall-clock | 3190.229s |
| Ingest busy-time | 3085.096s (96.7% utilization) |
| Per-ledger p50 / p95 / p99 | 1051.225 / 1414.314 / 1747.520 ms |
| Golden DB fetch+decompress | 2425s |
| stellar-core | v27.0.0 |
| Workflow run | #29133837755-1 |
✅ Backfill ingestion — verdict: ok
⏳ Backfill ingestion — ee0f5cbf53b2
| Metric | Value |
|---|---|
| Ledgers ingested | 8640 ([63412992 -> 63421631]) |
| Retention window | 8640 |
| Wall-clock | 17m46s |
| Ledgers/sec | 8.1 |
✅ Endpoint load test — verdict: ok
🎯 Endpoint load test — ee0f5cbf53b2
Serial blast per endpoint (ramp-up 2m, duration 3m, blaster 1c495b3c612c) against the backfilled RPC (ledgers [63413289, 63421928], catchup 1337s).
| Endpoint | Target RPS | Requests | Errors | p50 (ms) | p95 (ms) | p99 (ms) | p99.9 (ms) |
|---|---|---|---|---|---|---|---|
| getEvents (limit=1) | 1 | 179 | 7 (3.9%) | 18.3 | 7475.2 | 10002.4 | 10010.6 |
| getFeeStats | 15 | 2074 | 0 (0.0%) | 0.6 | 13.1 | 96.4 | 179.1 |
| getHealth | 15 | 2387 | 0 (0.0%) | 0.5 | 13.2 | 139.5 | 208.1 |
| getLatestLedger | 15 | 2385 | 0 (0.0%) | 136.1 | 180.5 | 267.3 | 354.3 |
| getLedgerEntries | 15 | 2075 | 0 (0.0%) | 1.4 | 47.6 | 108.4 | 162.9 |
| getLedgers (limit=1) | 1 | 180 | 0 (0.0%) | 160.1 | 359.9 | 378.1 | 382.5 |
| getNetwork | 15 | 2387 | 0 (0.0%) | 22.2 | 34.3 | 71.0 | 138.9 |
| getTransaction | 15 | 2075 | 0 (0.0%) | 27.2 | 38.6 | 105.3 | 191.7 |
| getTransactions (limit=1) | 1 | 179 | 0 (0.0%) | 61.5 | 77.2 | 105.9 | 166.7 |
| getVersionInfo | 15 | 2376 | 0 (0.0%) | 22.7 | 42.5 | 1012.2 | 2392.1 |
Performance Evaluation Test #1
🧪 Performance Evaluation Test #1
Commit: 6defac9a0c11 (blaster-test)
Run: https://github.com/stellar/stellar-rpc/actions/runs/29133628286
❌ Apply-load ingestion — verdict: fail
Load test failed before producing a result body.
❌ Backfill ingestion — verdict: fail
Load test failed before producing a result body.
❌ Endpoint load test — verdict: none
No result object published (leg timed out or failed before publishing). See the run logs.
What
TODO: Fill this out. This PR is a very early draft of work that is underway and is mainly exploring the architectural skeleton/seeing what works e2e before cleaning things up.
[TODO: Short statement about what is changing.]
Why
[TODO: Why this change is being made. Include any context required to understand the why.]
Known limitations
[TODO or N/A]