Skip to main content

Load Profiles

Under Reviewv0.1.0-alpha

Profiles are defined in load-tests/config/profiles.js. Pass a profile name via -e PROFILE=<name>. An unknown name throws immediately with the list of valid options.


Summary

ProfileExecutorPeak VUsDurationPurpose
smokeconstant-vus110 sSanity — does the suite wiring work?
loadramping-vus50~3 m 30 sTypical production traffic
stressramping-vus150~4 m 30 sAbove-normal load — finds bottlenecks
spikeramping-vus200~1 m 10 sSudden traffic burst — tests elasticity
soakramping-vus30~31 mLong-duration — detects memory leaks & drift

Profile Stages

smoke

Single VU for 10 seconds. Confirms the test harness, API connectivity, and scenario scripts all execute without errors before committing to a longer run.

VUs │ 1 ──────────────────────────── 0
└────────── 10 s ───────────────▶

load

Simulates a realistic production traffic ramp. Two-tier ramp: initial comfortable level, then peak.

StageDurationVUs
Ramp up30 s0 → 20
Steady1 m20
Ramp up30 s20 → 50
Steady1 m50
Ramp down30 s50 → 0
VUs │ 50 ──────────────
│ 20 ────── ╲
│ ╱ ───── ╲
└────────────────────────▶ time

stress

Three-tier ramp to 150 VUs to identify where latency starts climbing and which component becomes the bottleneck.

StageDurationVUs
Ramp30 s0 → 50
Steady1 m50
Ramp30 s50 → 100
Steady1 m100
Ramp30 s100 → 150
Steady1 m150
Ramp down30 s150 → 0

spike

Rapid ramp from baseline to 200 VUs and back. Tests whether the system can absorb a sudden traffic surge and recover cleanly.

StageDurationVUs
Baseline10 s0 → 20
Spike10 s20 → 200
Hold spike30 s200
Scale back10 s200 → 20
Ramp down10 s20 → 0
VUs │ 200 ──────
│ ╱ ╲
│ 20 ────╱ ╲──── 0
└────────────────────────────▶ time

soak

Gentle ramp to 30 VUs held for 30 minutes. The goal is not to stress the system but to observe behaviour over time: heap growth, goroutine leaks, connection pool drift, or GC pressure.

StageDurationVUs
Ramp up30 s0 → 30
Sustained30 m30
Ramp down30 s30 → 0

Run docker stats or watch the Grafana process metrics panel concurrently to observe memory behaviour.


Run profiles in this order to maximise signal and minimise wasted time:

  1. smoke — confirm the suite is wired correctly before anything else
  2. load — verify baseline: system performs comfortably at expected traffic
  3. stress — find where latency begins climbing
  4. breaking-point — pinpoint the exact RPS where SLOs are violated (see Breaking Point)
  5. spike — confirm the system recovers from a burst
  6. soak — verify no degradation over time at moderate load