Load Testing Your IIS Web Server
Last Update: Jul 11, 2021
If you want to learn IIS you can go from beginner to expert with my courses in the IIS Skill Path. Check it out!
All the theories, 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 necessarily 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 necessarily 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, making 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 extensive testing in addition to generating a load. In fact, load testing with Jmeter is just a very small part of its 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 tests to gauge performance of your website accurately, 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.
My courses on IIS: (View the whole path)
- IIS Administration Fundamentals
- IIS Administration in Depth
- Creating and Configuring New Sites in IIS
- Installing and Configuring IIS Servers
- Securing IIS Websites