Measure first
Run a gradual load test with k6, JMeter or Locust and watch errors as well as CPU.
Server capacity & hosting calculator
Estimate concurrent users, requests per second and CPU requirements. No system-design knowledge required.
Start with one question
Capacity visualization
These are load scenarios from this calculation, not benchmark data or a traffic forecast. “Overloaded” starts beyond the calculated planning capacity.
CPU request capacity is CPU cores multiplied by the target CPU use, divided by CPU seconds used per request. User demand is active users multiplied by requests per minute, divided by 60.
No measured RPS was supplied, so the result uses the illustrative CPU model.
Practical next steps
Run a gradual load test with k6, JMeter or Locust and watch errors as well as CPU.
Profile expensive code and move slow background jobs out of request handling.
Measure database calls, add suitable indexes and avoid repeated queries.
Cache repeated work where fresh data is not required, then measure again.
Watch RAM, database connections, network, queues and external API limits.
Add CPU cores or instances when measurements show processing capacity is the limit.
Beginner's guide
A server capacity calculator turns a few workload assumptions into a planning estimate. It can estimate requests per second, simultaneously active users or CPU cores, but it cannot promise how a real application will behave.
The useful question is not simply how many people have accounts. It is how many people are active together, how often they send requests and how much processing each request needs.
A server has no universal user limit. A cached website, a database-heavy web app and an AI application can use the same hardware very differently. Start with sustainable RPS, then convert that request capacity into active users using an explicit interaction rate.
If you have a measured sustainable RPS from a representative load test, use it instead of a CPU-only estimate.
For this calculator, "concurrent users" means people actively using the app during the same period. It does not mean every open session or logged-in account.
Expected RPS = active users x requests per active user per minute / 60
Active-user capacity = sustainable RPS x 60 / requests per active user per minute
Requests per second (RPS) measures work arriving at the server. Concurrent or active users describe people. One active person may send no request while reading, then trigger several API requests with one action.
HTTP requests in flight are different again. When latency is known, in-flight requests equal RPS multiplied by average latency in seconds; they are not a user count.
CPU cores provide processing time. The CPU model divides available core-seconds by CPU seconds used for each request and keeps the chosen utilization reserve.
RAM holds application processes, workers, runtime data and caches. User count alone cannot produce an honest RAM requirement, so memory must be measured under a realistic workload.
Estimate active users and requests per minute first. Measure or estimate CPU time per request, choose a target CPU utilization below 100%, then round the result up to a whole CPU core.
A CPU formula cannot see slow database queries, connection pools, memory pressure, network limits, queue workers or third-party APIs. A realistic load test exercises those parts together and shows where errors or unacceptable latency begin.
Test gradually in a safe environment. Use realistic user flows, watch failures as well as speed, and decide acceptable thresholds before testing.
Transparent examples
These figures are computed by the calculator's CPU model. They are illustrative assumptions, not measured benchmarks or hosting guarantees.
Mostly cached pages with light interaction.
RPS = 2 x 0.7 / 0.008 = 175 RPS
Active users = 175 x 60 / 0.5 = about 21,000
Illustrative CPU estimate only. RAM, database, network and application limits are not proven.
Ordinary pages that read and write data.
RPS = 4 x 0.7 / 0.025 = 112 RPS
Active users = 112 x 60 / 2 = about 3,360
Illustrative CPU estimate only. RAM, database, network and application limits are not proven.
Frequent requests with more CPU work per request.
RPS = 8 x 0.7 / 0.05 = 112 RPS
Active users = 112 x 60 / 6 = about 1,120
Illustrative CPU estimate only. RAM, database, network and application limits are not proven.
Methodology
CPU-limited RPS = CPU cores x target utilization / CPU seconds per request.
Expected RPS = simultaneously active users x requests per active user per minute / 60.
CPU processing time is processor work. Latency is total elapsed response time, including waiting; latency is used only for optional in-flight requests.
A measured sustainable RPS replaces CPU-model capacity for the active-user estimate because it can include more of the real system.
Database work, memory, network, workers, queues, storage and external services can reduce capacity before CPU reaches its target.
A representative load test with explicit error and latency thresholds is more reliable than a hardware-only estimate.
Application presets are editable examples, not third-party benchmarks. Read the broader TechVodka methodology and data-source policy.
These official documentation pages explain how established tools model users, request rates and load-test plans. They do not supply benchmark values to this calculator.
Direct answers
There is no fixed number for a server size. Estimate sustainable requests per second, then multiply by 60 and divide by requests per active user per minute; a load test is needed to confirm the result.
With an illustrative 25 CPU milliseconds per request, a 70% CPU target and two requests per active user per minute, the CPU model gives 112 RPS and about 3,360 active users. This is not a benchmark, and 8GB of RAM does not prove that the database, memory, network or application can sustain that traffic.
Expected RPS equals simultaneously active users multiplied by requests per active user per minute, divided by 60. For example, 1,000 active users making two requests per minute produce about 33.3 RPS.
The answer depends on how often those users send requests and how much CPU each request uses. At two requests per minute, 25 CPU milliseconds per request and a 70% CPU target, 10,000 simultaneously active users create about 333.3 RPS and the CPU formula rounds up to 12 cores.
No. Users can pause, read or send several requests at once, so user count and request rate measure different things; 1,000 users making two requests per minute create about 33.3 RPS, not 1,000 RPS.
There is no reliable RAM requirement based only on user count. Measure the application process, worker count, cache, runtime overhead and database memory under realistic load, then keep operating headroom.
Use k6, JMeter or Locust in a safe test environment and increase traffic gradually. Track errors, latency percentiles, CPU, memory, database connections and network use, and define an acceptable limit before the test.
Yes, a CPU model can provide an early planning estimate when its assumptions are visible. Confidence remains low until a representative load test measures the full application and its dependencies.
A logged-in user may be idle and send no requests. An active user is interacting during the period being measured, so active users are more useful for estimating traffic demand.
Slow queries, locks, connection limits and storage latency can cap throughput before the application CPU is full. Include representative database work in load tests and monitor the database separately from the web server.