Web server hardware requirements
December 12, 2006 7:03 AM

How to calculate hardware requirements for a load balanced web server cluster? The web servers will be running Windows 2003 with a back end DB server, I want to support about 1000 simultaneous connections per server. The web application is fairly AJAX intensive. Not sure how I go about determining what sort of hardware I need for the servers, any ideas or suggestions?
posted by RedMosquito to Computers & Internet (6 answers total) 1 user marked this as a favorite
Try load testing your application. I've used the open source Grinder suite with some success. It's not too difficulty to get started with. You build test-scripts by running your browser through a proxy which records your actions, then run multiple copies simulating however many simultaneous users you're interested in.
posted by roue at 7:11 AM on December 12, 2006


The generic advice is to benchmark at a lower load level and then scale that up to determine required capacity. It's pretty hard to do completely on paper.
posted by GuyZero at 7:11 AM on December 12, 2006


Also, one key thing during load testing is to determine your app's true bottleneck. Is it db access? Serving pages? Login? Whatever that bottleneck resource is, that's what you're going to need to scale up the most.
posted by GuyZero at 7:22 AM on December 12, 2006


It's impossible to do on paper. GuyZero is right about bottleneck. Your application will only be as fast as the narrowest bottleneck, and after you improve that it's on to the next narrowest bottleneck, until your application performs adequately ... and then the CEO will break down your door when you have some big event that drives load up into the stratosphere bitching about your site not responding fast enough.

The real answer to the question: "Well, how large is your budget?" ... buy as much hardware in as redundant and highly utilized configuration as possible, and I can guarantee that shortly after flipping the switch you'll either have found that you need more hardware and need to optimize X or that you have more hardware than you know what to do with ... in which case I guarantee you'll find a way to use it. ;) We always have!

Make sure that whatever you do your database can handle the load of the ajax requests. Look into database caching like memcached if you're doing ajax. Try to avoid CPU-intensive ajax transmittal methods, i.e. don't parse XML on the server side.
posted by SpecialK at 8:42 AM on December 12, 2006


Can your DB handle 1000 simultaneous connections from X computers? You mention PER SERVER, so that's a decent sized hit for a web server to take, depending on what's being served.

Your best bet is caching, like SpecialK said. After that, perhaps loadtesting from a few different computers at a time, to get up to the required simultaneous connections?
posted by taumeson at 9:28 AM on December 12, 2006


For the love of god, don't forget to consider an actual hardware load balancer!
Here's a few to consider:
F5 BigIP
Foundry ServerIron
Cisco LocalDirector


They're expensive new but you can get them used for a heck of a lot less. I have always had excellent luck with the Foundry ServerIron hardware.

Much better idea than just throwing tons of web servers behind it. And make sure that your application really does support load balanced front end boxes.
posted by drstein at 6:49 PM on December 12, 2006


« Older Juicy Sushi goodness   |   Creating a custom search engine from a set of... Newer »
This thread is closed to new comments.