Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you define minimum server requirements for a web application

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 ?

like image 489
Mortalus Avatar asked Oct 21 '22 16:10

Mortalus


1 Answers

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

like image 100
bbozo Avatar answered Oct 23 '22 21:10

bbozo