Whats the best way to determine the hardware requirements for an application
Solution 1
This is sort of the basic question of capacity planning. You start by defining a workload model, which describes what you expect to get in terms of traffic. This can be as simple as "I expect 20 page hits a minute maximum."
Then you need to think about burst loads. Failing any other data, you can assume that interarrival times are exponentially distributed, which means that if you have a page request at time t0, you're as likely to have the next arrival tnext a very short time after t0 as a long time. (That's a gross oversimplification, but will do for a one-page answer.)
So let's say the average interarrival time is λ. because the time distribution is exponential, we know that we can approximate the interarrival time distribution with a normal, with one standard deviation (1σ) equal to √λ. So, we know that
- about 32 percent of the time, two pages will be requested less that λ- √λ seconds apart.
- about 5 percent of the time, two pages will be requested less that λ- 2√λ seconds apart.
- less than 1 percent of the time, two pages will be requested less that λ- 3√λ seconds apart.
Decide what you're willing to accept, and test to make sure your web system can sustain that rate.
Solution 2
To add to what Charlie says, once you have a workload model you can feed this into a simulation of your system to determine the horsepower you need to satisfy that load. There are some tools that can do this sort of simulation:
This stuff isn't easy, and the commercial tools will cost ya.
You could also try looking for a benchmark that's close to your expected load and see what systems give you the performance you're looking for. The TPC benchmarks would be a good place to start.
Solution 3
I guess that your web app is not a critical business application as you said "a server" and "a database" otherwise you should perhaps look for some means of redundancy ?
At work we have some guidelines about the hardware, and the latest suggestion is that the server should be 64 bits as SharePoint 14 looks like a 64 bits only version.
If you can afford it I would recommend that the SQL server should be 64 bits as most people agree that adding more RAM (above 4 Gb) really pays off.
John Sonmez
I am a software engineer dedicated to best practices. I specialize in unit testing approaches, and continuous integration.
Updated on June 03, 2022Comments
-
John Sonmez almost 2 years
What methods do you use to determine what kind of hardware you need for a server?
I often find it very hard to predict what kind of hardware you will need for a web based application with a database.
Do you have any good methods or recommendations on how to best pick hardware to use?