Load Model & Traffic Shape
What Are Concurrent Users?
Concurrent users are the users active in a system at the same moment — in a load test, the virtual users holding an open session or an in-flight request.
Also known as: Concurrency, Simultaneous Users
Concurrency is measured, not configured
You set a virtual user count; you observe concurrency. The VU pool is only an upper bound. If half your VUs are sitting in think time at any given instant, actual request concurrency is roughly half the pool — and that gap widens the more realistic your think times are.
This is why two tools reporting “1,000 users” can place wildly different load on the same system. The number that matters is what arrives at the server, not what the config file says.
The two definitions people mix up
Concurrent users has one meaning in capacity planning and another in performance measurement, and conflating them causes most of the confusion around the term.
- Session concurrency — users with an active session, including those idle between clicks. This is the number product teams mean, and it drives memory, session storage, and licence counts.
- Request concurrency — requests actually in flight at one instant. This is the number that drives CPU, connection pools, and queueing. It is usually far smaller.
Little’s Law ties it together
Concurrency, throughput, and response time are not independent. Little’s Law states that concurrency = throughput × response time. At 200 requests per second with a 250 ms mean response time, about 50 requests are in flight at any moment.
The practical consequence is uncomfortable: when a system slows down under load, concurrency rises even though no additional users arrived. Growing concurrency is often a symptom of degradation rather than a cause of it.
Measuring it during a run
Since concurrency is observed rather than configured, it has to be read off something. Server-side, the honest sources are in-flight request counters, active worker or thread counts, and open connections on the load balancer — all instantaneous gauges rather than counters accumulated over a window.
Sampling frequency matters more than it looks. Concurrency measured once a minute smooths away exactly the short bursts that cause queueing, so a system whose one-minute average concurrency is comfortable can still be saturating for seconds at a time. Sample at intervals short enough to see the bursts you care about.