PerfLoad No script HTTP load testing

PerfLoad / HTTP load test

An HTTP Load Testing Tool That Starts From a Request

An HTTP load test does one simple thing: send the same kind of request from many clients at once and record what comes back. The hard parts are describing the request, controlling how much load you apply, and reading the numbers correctly. PerfLoad handles the first two from a curl command and a short form, and this page explains how to think about the third.

Start a Load Test →

Runs in Docker — see the installation guide.

What one test consists of

Every PerfLoad test is a request definition plus a load profile, and both are small:

SettingWhat it controlsDefault via the runner API
Virtual usersHow many simulated clients send requests at the same time10
DurationHow long the users keep sending requests, e.g. 30s or 5m30s
IterationsA fixed number of requests instead of a time limitnot set
PauseSeconds each user waits between its own requests1
TimeoutHow long a request may take before it counts as failed30
ValidationOptional check on the response body, by JSON path, XPath, or textnone

The request itself — method, URL, headers, and body — comes from the curl command you paste, or from the fields in the Dashboard's quick form.

How load is applied

Each virtual user runs a loop: send the request, check the response, wait for the pause, repeat. That is a closed model, which means the request rate isn't set directly; it follows from how fast the server answers. A useful rule of thumb:

requests per second  ≈  virtual users / (average response time + pause)

With 10 users, a 1-second pause, and 100 ms responses, expect roughly 9 requests per second. Set the pause to 0 and the same 10 users send far more. If the server slows down, throughput drops with it, because users wait for each response before sending the next. Keep this in mind when you compare runs: changing the pause changes the load as much as changing the user count does.

Reading the result

Compared with other command-line tools

Tools such as ApacheBench (ab), wrk, and hey are lightweight and quick for a single URL and a flag-driven load level, and they're a good fit for a fast throughput check from a terminal. PerfLoad is aimed at the layer around that: taking a full request with headers and a body straight from curl, varying data per request, and keeping each run's results so you can open, compare, and rerun them. The load itself is generated by k6. If you already know exactly which tool you like for raw throughput, there's no need to switch; if you keep rebuilding the same command line and losing the output, this is what PerfLoad saves you from.

An example

An authenticated GET with a per-request query value, so responses aren't all served from one cache entry:

curl 'https://api.example.com/search?q=${random}' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json'

${random} is a built-in PerfLoad variable (a random number from 0 to 999999), resolved for each request during Run Test. Send it once with Run Single first, then run 5 users for 30 seconds, and scale up once the numbers look sane.

FAQ

Does PerfLoad support HTTPS and client certificates?

HTTPS URLs work like any other. The runner API also accepts a PEM client certificate and key for mutual TLS.

What's the difference between duration and iterations?

Duration keeps every user sending requests for a set time. Iterations stops after a fixed total number of requests, which is handy when you want the same request count in every run.

Why does my error rate look high on a healthy server?

Check the failing status codes. Anything outside 2xx counts as a failure, including auth errors and rate-limit responses, so a 401 or 429 can inflate the error rate without the server being unhealthy.

Related guides

Send your first concurrent requests

Paste a curl command, set the users, and read p95.

Start a Load Test →