Soak testing an API: find slow leaks

Does it still work an hour later?

Holds a steady load for a long stretch to find slow leaks.

What a soak test is

A soak test holds a moderate, steady load for a long stretch — an hour by default in Stabula, longer if you set it — and watches for what changes.

Nothing here is about peak capacity. It is about the failures that need time to appear: memory that is never released, database connections that are never returned, a cache that grows without bound, a log file that fills a disk. A system can pass every load test and still fall over on a Tuesday afternoon for one of these.

When to run one

  • Before a long weekend or a period when nobody will be watching.
  • After a release that changes caching, pooling, or anything that holds a resource open.
  • When a service is restarted regularly and nobody remembers why — that habit is usually hiding a leak.

What to read in the report

Response time drift

Compare the p95 early in the run with the p95 late in it. A steady climb over a flat load is the signature of a leak.

Errors that start late

Zero errors for forty minutes and then a scattering is worth more attention than errors throughout.

The comparison with a shorter run

Pin a load test as the baseline: if the soak is slower at the same user count, time is the variable.

Running one in Stabula

Build the request in the editor — URL, headers, auth, body — choose Soak Test, and the settings below are filled in for you. Change any of them; the load profile under them redraws, and the estimate says what the run will cost against your month's allowance before you start it.

The run itself happens in an isolated container on our infrastructure, not in your browser, and the report is written in sentences rather than percentiles alone: which targets were met, which checks failed, and what the runner hit — grouped by cause and host.