Whats the best way to determine the hardware requirements for an application

John Sonmez picture John Sonmez · Dec 18, 2008 · Viewed 18.3k times · Source

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?

Answer

Charlie Martin picture Charlie Martin · Dec 18, 2008

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.