2

Are there any heuristics to define server requirements for typical applications? Coming from internal development to a handful of users, this is our first deployment of a internet application. Internally, we just deploy, monitor and act if needed, but being on a tight budget and having to deploy remotely, I have to do a estimate with a greater degree of accuracy.

I have the following sources of input to a parametric estimate:

Out of testing I get: - the trafic volume - the number of SQL requests

And from the project management I get the number of expected total and simultaneously connected users.

Is there a rule of thumb that I can apply on these parameters?

HopelessN00b
  • 53,795
  • 33
  • 135
  • 209
Oli
  • 123
  • 1
  • 5

5 Answers5

2

There's not a simple math formula to determine the load you'll be facing. Your load can change dramatically based on:

  • The queries - if you're using cursors, for example, you'll need more power than if you use set-based operations. All it takes is one poorly designed query to bring a server to its knees.
  • The indexes - a good DBA can make the difference between an app performing quickly or slowly.
  • The amount of historical data - as your application is out for longer periods of time, more data can be stored, which affects how quickly SQL Server can return your query results. If your app purges history fast, that's even better.
  • Hardware tweaks - for example, a properly tuned SAN can sustain much more load than a SAN that's not tuned correctly.

There are schools of thought around how to do capacity planning, but it's a lot more complicated than a few formulas.

Brent Ozar
  • 4,425
  • 18
  • 21
2

There are an enormous number of variables you have to take into account, so there's no easy way to do this. A few things you'll want to consider (in addition to Brent Ozar's excellent notes):

  • How large is your data set? What is your expected growth rate and pattern?
  • How will these services be segregated? Separate web and sql servers? Can your application scale to a farm of each?
  • Is most of the work done by your app on the web-end of things, or by SQL queries?

For a new application, the best way to deploy is by buying a couple scalable servers significantly below your budget. Roll out your application as slowly as possible (ie, dogfood it yourselves and with a few trusted customers, then gradually beta it out to the general public).

During this process, keep close tabs on every performance metric you can get your hands on to determine where your bottlenecks are. Spend the money you saved earlier on opening up these bottlenecks.

This approach won't let you launch in one big storm, but it will avoid a lot of headaches later on.

sh-beta
  • 6,838
  • 7
  • 47
  • 66
1

There is no silver bullet; and depending on the nature of your application you may see more load with fewer users. For example alot of Ajax on a site can drastically increase the load on Web and DB servers.

I have heard that ~75 concurrent users per 1GB RAM and single Core CPU on the web server is a safe estimate. So your typical 8GB / Quad Core Server should handle alot of users. If you get to that point, bandwidth may also start to play a role in your load.

I don't have much experiacne with SQL Server but I would imagine that similar numbers apply.

Nate
  • 2,151
  • 6
  • 26
  • 41
0

I don't think there is any rule of thumb you can apply, except that the only way to know how your application will perform is to watch how your application performs.

Be sure to do load tests targeting 1.5-2 times the load your project teams anticipates. If you handle this load succesfully then I would keep increasing the load so you know what the breaking point is.

JoshBerke
  • 189
  • 2
  • 8
0

What are your web/db platforms?

If you are using IIS and SQL Server, Microsoft makes a few tools for stress testing / capacity testing your websites. IIS Tools

This article seems like a good start for testing SQL Server.

Jimmie R. Houts
  • 1,853
  • 1
  • 15
  • 12