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?
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
Decide what you're willing to accept, and test to make sure your web system can sustain that rate.