How do you define minimum server requirements for a web application
Asked Answered
J

2

6

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 ?

Judon answered 20/1, 2014 at 18:53 Comment(1)
You forgot disk IO, this is the main bottleneck on databases and databases are usually main bottleneck of a web app and one that scales horizontally with most difficulty, don't gloss over disk IONikkinikkie
N
3

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

Nikkinikkie answered 20/1, 2014 at 19:6 Comment(0)
W
0

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

Wellmannered answered 20/1, 2014 at 19:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.