Skip to content

Load-Test Report — Durable Path (Redis + Postgres + mock FMS)

Status: measured (local Docker soak)
Date: 2026-07-11T05:08:27.803Z
Topology: Redis redis://127.0.0.1:16380 · Postgres postgresql://waspada:***@127.0.0.1:15433/waspada_soak · Streams + outbox poller · mock FMS
Ingest: 50 req/s × 20s per fail-rate cell · OUTBOX_POLL_MS=500 · OUTBOX_CLAIM_LIMIT=50 · OUTBOX_BACKOFF_BASE_MS=2000 (soak-only; prod default 60s) · drain 45000ms while gateway alive after each cell

Matrix

Fail rateThroughputp50 msp99 msnon-2xxalertsaudit_eventsprocessed_eventsoutbox succeededdead_letteredmock FMS
029.0793198806002418600600/609 (98.5%)0mock ok=600 fail=0
0.136.4700179907473009747747/757 (98.7%)0mock ok=747 fail=91
0.231.6755202816502625650650/660 (98.5%)0mock ok=650 fail=193
0.534.4728186007082919708680/718 (94.7%)0mock ok=680 fail=679

How to read this

  • alerts / processed_events ≈ durable write + idempotency ledger under the Streams/in-process pipeline.
  • audit_events grows with ingest + alert_created + delivery_* kinds (1 INSERT per event today).
  • outbox succeeded / total is the recovery rate after the in-process drain window (poller still running). At high fail rates, failed/dead_lettered should rise; succeeded should climb as retries land during drain.
  • Ingest p99 here includes durable encrypt+INSERT path (and Redis store). It is not comparable 1:1 to the memory-only baseline (13/64 ms).
  • Durability–latency trade-off: durable-path p99 reflects the cost of guaranteed delivery (Postgres write + Redis Streams publish + outbox commit). Memory-only path is 64 ms p99. This is a measured design cost, not a performance bug.
  • Backoff note: production OUTBOX_BACKOFF_BASE_MS defaults to 60s. This matrix uses 2s so retry recovery is observable inside the drain window.

Re-run

bash
docker compose -f apps/gateway-api/docker-compose.soak.yml up -d
pnpm --filter @waspada/gateway-api soak:durable

# Single cell
LOAD_TEST_MOCK_FMS_FAIL_RATE=0.2 pnpm --filter @waspada/gateway-api load-test -- --durable --mock-fms

Known gaps (unchanged)

  • No XAUTOCLAIM PEL sweep (B5)
  • Audit writes are per-event INSERTs (batch before harder load-test)

Waspada AI: Enterprise infrastructure powering public defense.