Overnight soak test
import { Steps, Aside } from ‘@astrojs/starlight/components’;
Problem: Some failures only appear after hours under load — memory leaks, connection pool exhaustion, log file rotation failures, slow garbage-collection pressure. A 10-minute load test will never find these. A soak test holds moderate load for 8–24 hours and looks for drift in key metrics over time.
Test type: Soak / endurance test.
Prerequisites
Section titled “Prerequisites”- A MaxoPerf account with a test that has passed a standard load test at the target VU/RPS level.
- Awareness that the test will consume runner quota for the full duration — verify your plan limits before starting.
Step by step in MaxoPerf
Section titled “Step by step in MaxoPerf”1. Write the soak scenario
Section titled “1. Write the soak scenario”execution: - scenario: api-soak concurrency: 50 # moderate — 50 % of your peak ramp-up: 5m hold-for: 8h # the soak window throughput: 100 # optional: cap RPS for predictability
scenarios: api-soak: requests: - label: GET /api/health url: https://api.example.com/api/health method: GET
- label: GET /api/products url: https://api.example.com/api/products method: GET headers: Authorization: Bearer ${API_TOKEN}
- label: POST /api/sessions url: https://api.example.com/api/sessions method: POST headers: Content-Type: application/json Authorization: Bearer ${API_TOKEN} body: '{"user_id": "u-soak-01"}'Keep soak test scenarios simple — the goal is sustained pressure, not scenario coverage. A handful of representative endpoints is enough.
2. Upload and configure the test
Section titled “2. Upload and configure the test”- In the MaxoPerf console, open the test and upload the YAML under Files.
- Bind
API_TOKENunder Settings → Secrets. - Under Configuration, confirm the location and VU count.
3. Schedule the soak to start overnight
Section titled “3. Schedule the soak to start overnight”Rather than clicking Run now and staying up, schedule it:
- Switch to the Schedules tab.
- Click New schedule.
- Enter a cron expression for tonight — for example
0 22 * * *(10 PM every night). - Pick your timezone.
- Name it
overnight-soakand save.
See Schedule recurring tests for the full scheduling workflow.
4. Review the results in the morning
Section titled “4. Review the results in the morning”When you open the run the next day:
- Open the run and go to the Overview tab.
- Zoom the time range to the full 8-hour window.
- Look at p95 latency over time — a healthy system shows a flat line. An upward trend indicates drift (memory pressure, pool exhaustion).
- Check error rate — any sustained error rate after the first few minutes of ramp-up is a finding.
- Switch to the Runners tab to verify all runners stayed healthy throughout.
Verify
Section titled “Verify”- Latency is flat or has a negligible trend over the full 8-hour window (< 5 % drift from the 1-hour mark to the 8-hour mark).
- Error rate stays near zero after ramp-up.
- RPS tracks the target steadily — no progressive drop that would indicate pool exhaustion starving new requests.
- The run status is
Finished.
Variations
Section titled “Variations”- 24-hour soak: extend
hold-for: 24hfor platforms where daily cycles (midnight jobs, log rotation, certificate renewal) are expected. - Recurring weekly soak: leave the cron schedule running on a weekly cadence so every release is validated against the soak profile automatically.
- Parameterise with CSV data: supply a data entity with enough rows for the full 8-hour run so unique users cycle in — see CSV data-driven test.
Where to go next
Section titled “Where to go next”- Soak / endurance test — how to read a soak result and the patterns that indicate common failure modes.
- Scheduled regression test — combine scheduling with a weekly baseline comparison.
- Build a reporting dashboard — set up the dashboard before the soak so the morning review is fast.
- Schedule recurring tests — the full scheduling how-to.