How do you define minimum server requirements for a web application

3.7k views Asked by At

I'm developing a web-application in C# - MVC. I cannot find any decent information about how would i define the recommended server requirements in terms of:

  • CPU cores and speed
  • Bandwidth
  • Memory
  • Disk space (This one is easy to figure out .. :)

What questions should i ask ? that may effect the above parameters and how would they be effected by the answers ? e.g. If the client says he\she expects to have 20 concurrent users in the system how can i multiple this to understand what is the required memory consumption, or CPU usage ?

2

There are 2 answers

0
Dmitri On

You would do this in your testing. Microsoft even provides a guide on how to do this with .NET

0
bbozo On

Rule of thumb is that if you expect 20 concurrent users you should be able to handle 40-60 (x 2-3) to handle peaks (since website visits behave like a poisson process and most benchmark tools model uniform load over time)

  1. get a "standard" server, a dev box may do
  2. do benchmark (I'm a rubyst I'd use https://github.com/dbrady/tourbus)
  3. find concurrent user number for which the server is stable, get load stats (raw cpu power used, memory used, disk io used...)
  4. scale load stats until you meet the concurrent users number requirement
  5. multiply last values by something between 2 to 3 - these are your server stats

PS bandwidth is different, not sure how to gauge that effectively due to cacheing - it depends a lot on how long users hang on your site