Load Testing Your IIS Web Server
All the theory, calculations, and estimations in the world aren’t going to tell you how your website will truly perform under a load. If you’re deploying a new server, or doing any kind of performance enhancements you don’t want to test your results in production. It’s always a good idea to see how your system behaves before your visitors do. To do that, you can use a load testing tool, and here are a few I use quite frequently.
One of the “quick and dirty” applications I use is Netling. This is a super simple tester written in C#. You will need to compile this with Visual Studio, but you don’t neccessarily have to be a developer to do it. I’ve been able to load it up, and select build to create it with no modifications with many versions of Visual Studio.
Netling is super simple to operate and about as easy as it gets.
You select how many threads you want to run. This is entirely up to you, more threads will put more load on your machine, and depending on how many cores your CPU has, more may not neccessarily be better. Experiment with it and see what works best for you.
It has a feature for “Pipelining”. This is when multiple requests go through a single socket without waiting for a response. Setting this higher will generate a higher load but again this something to adjust for best results. There will be a physical limit to pipelining depending on your hardware and connection speed.
This is a handy tool and is extremely simple to use. One issue I’ve had with netling is it sends raw requests that aren’t much like a real browser. To emulate real traffic more accurately I have another tool I like to use.
- Open Source, can be easily modified
- Extremely Simple
- Doesn’t simulate real transactions well
- Can’t do authentication or other simulations
- Only tests one URL at a time
Web surge is by far one of my favorites. It’s a great application that simulates a load on your server in a very realistic fashion.
With this program you create sessions, which means you can use more than one URL for the test. Each of the URLs will be run in the session, which can make it more random and realistic. It has a ton of great options as well:
It gives you quick results, and you can “drill down” to get more detailed data.
You can also export these results in several formats. There’s the websurge proprietary format, as well as XML or JSON. You could parse these results for future analysis work.
Overall Websurge is among my favorites for load testing because it’s closer to real world traffic. If you put in a list of all your pages and randomize the test, it can provide some solid information.
Web Surge Pros
- Free (for personal use)
- Professional Version reasonably priced
- Fast and generates a large load
- Simple to use, yet powerful
- Simulates “real world” traffic very well
- Extremely configurable
Web Surge Cons
- None than I can think of
The Next application we’ll look at is jmeter. This is an extremely powerful program and can do very thourough testing in addition to generating a load. In fact load testing with jmeter is just a very small part of it’s overall functionality.
With JMeter you have scenarios to run out, because it’s more of a testing oriented application you can run through a longer set of steps and processes as a part of your test.
I would encourage you to really dig into this application and learn as much as you can about it to get the full benefits of it.
Apache JMeter Pros
- Very Powerful
- Detailed tests can be set up
- Minimal setup
Apache JMeter Cons
- Steeper learning curve
- Can be fairly complicated
- May be overkill for what you need
There are many tools out there for load generation, but these are the ones I use the most. I like to set up various different tests to accurately guage performance of your website and it’s reaction to a load.
In fact, the reaction to a heavy load is the most important thing I’m looking for. When doing performance measurements it’s difficult to really nail down all the variables and prove a change has increased performance. But sending a heavy load to your server and seeing how it reacts is pretty conclusive.
I cover some performance and stabily enhancements in my Pluralsight Course - IIS Administration Fundamentals. Check it out if you want to learn more about administering IIS Servers.