views:

254

answers:

6

In Joel's article for Inc. entitled How Hard Could It Be?: The Unproven Path, he wrote:

...it turns out that Jeff and his programmers were so good that they built a site that could serve 80,000 visitors a day (roughly 755,000 page views)

How would I go about figuring out the maximum load my server(s) can handle?

A: 

Apache has a tool called ab that you can use to benchmark a server. It can simulate loads requests and concurrency situations for you.

Jasper Bekkers
Unfortunately, I am using IIS
Jason
That doesn't matter, the ab tool only makes requests to a certain server it is not dependent on apache.
Jasper Bekkers
+1  A: 

Basically you need to mimic the behavior of a user and keep ramping up the number of users being mimiced until the server response is no longer acceptable.

There are a variety of tools that can do this but essentially you want to record a few sessions activity on your site and then play those sessions back (adding some randomisation to reflect real user behaviour) lots of times.

You will want to log the performance of each session and keep increasing the load until the the performance becomes unacceptable.

Brody
I would have to put a second system in place, to accept this garbage data so that I don't corrupt my database. My site is also very complex (online forms), so the scripting, I would imagine, would be intense. Any chance of finding an algorithm to scale up the IIS log files or something?
Jason
+1  A: 

Benchmarking your software is often a lot harder than it seems. Sure, it's easy to produce some numbers that say something about the performance of your software, but unless it was calculated using a very accurate representation of the actual usage patterns of your end users, it might be completely different from the actual results you will get in the wild. Websites are notoriously hard to benchmark correctly. Sure, you can run a script that measures the time it takes to generate a page but it will be a very different number from what you will see under real world usage.

Inorder to create a solid benchmark of what your servers can handle, you first need to figure out what the usage patterns of your users is. If your site is already running, you can easily collect this data from your logs. Next, you need to create a simulation that will emulate exactly the same patterns as your real users exhibit... that is - view front page, login, view status page and so forth. Different pages will create a different load on the servers requiring that you actually fetch correct set of pages when simulating load on your servers. Finally, you need to figure out which resources are cached by your users, you can do this again by looking through your access log or using a tool such as firebug.

kasperjj
+1  A: 

You can create several "stress tests" and run them as the other posters are telling.

Apache has a tool called JMeter where you can create these tests and run them several times.

http://jakarta.apache.org/jmeter/

Greetings.

Cesar
+1  A: 

JMeter, ab, or httperf

Andrew
+1  A: 

Jason, Have you looked at the Load Test built in to Visual Studio 2008 Team System? Check out this video to see a demo.

Edit: Here's another video that has better resolution.

Travis Collins