Utility SpotlightWeb Capacity Analysis Tool
Web logs and historical traffic analysis may give you insight into the kind of traffic you can expect over time, but how can you tell what your infrastructure can really handle? To find out, you need a tool that can push your infrastructure and its application stack to the breaking point. One such tool is the free Web Capacity Analysis Tool (WCAT), a lightweight load-generation utility that plays back scripted HTTP requests against a Web server (or load-balanced server farm) while gathering performance statistics for later analysis. The latest version (6.3.1 as of this writing) is available for both x86 and x64 Windows systems (x86: iis.net/downloads/1466/ItemPermaLink.ashx; x64: iis.net/downloads/1467/ItemPermaLink.ashx) and has support for IPv6 networks. In addition, WCAT is multithreaded and supports multiple load-test clients controlled from a single source, so you can simulate thousands of concurrent users.
This utility lets you repurpose your old machines as test clients, and each of those test clients can spawn multiple virtual clients (the maximum number of which will depend on the network adapters and other hardware of the client machine). You can choose either HTTP 1.0 or HTTP 1.1 requests, with or without SSL. And, if your test scenario requires it, you can use scripted basic or NTLM authentication to gain access to those restricted portions of your site. (If your site uses cookie, form, or session-based authentication, you can create the correct GET or POST request to authenticate your test user.) WCAT also manages any cookies your site may set, so profile and session information will persist.
WCAT can help you test the limits of your Web site infrastructure (Click the image for a larger view)
WCAT comes with a great user guide that helped me quickly create a Microsoft® .NET Framework console application that generated a test client script based on user traffic data from site traffic audit history, enabling me to simulate real-world traffic on a new codebase before deployment. And, if you have a C programmer on your staff, you can create custom functions and response handlers that can be called by your scenario files to tailor its functionality to your environment.
To use WCAT, you need to configure two files, a controller file that contains the general test settings such as the number of clients, virtual clients per client, performance counters to track, and the Web server you are testing against; and a scenario file that contains the test scenario, the default request parameters, and any references to custom functions and libraries.
The application logs the test results to an XML file to which you can apply the included XSL style sheet to get an organized tabulation of the results when viewed in Internet Explorer®. The report contains summary information such as the number of transactions executed, context switches that occurred, the percent of CPU utilization (of all CPUs), and the total number of errors encountered. You also get a section listing the results of the performance counters you configured in the settings file (see the screenshot for an example), a response-time analysis, a per-transaction statistics report, a per-client breakdown section, and information regarding how your test setup was configured. In addition, you'll see the hardware configuration of the remote Web server you are testing along with a listing of all the updates that have been installed. This is a great way to determine and track whether a patch will have any performance implications for your site.
All in all, if you manage a Web site infrastructure, the WCAT utility can help you gain insight into how your platform will perform under stress before that next big code release.
Greg Steen is a technology professional, entrepreneur, and enthusiast. He is always on the hunt for new tools to help make operations, QA, and development easier for the IT professional.
© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.