Review: Performance Testing .NET Web Applications [MS Press]
By Peter A. Bromberg, Ph.D.
Printer - Friendly Version
Peter Bromberg
One of the biggest "missing links" in the development cycle, in my opinion, is a rigorous performance analysis regimen. That's why I was so pleased to see a book like Performance Testing coming out of MS Press. The book was written by key members of the Microsoft Application Consulting and Engineering (ACE) Team, whose job it is to provide performance analysis leadership and world - class tuning services to some of the biggest and most heavily trafficked web sites run by Microsoft.

I've had "close to the metal" personal experience with performance analysis and the .NET platform. While working for a major banking software firm within the last 2 years, I was a developer lead on a .NET conversion project that was jointly sponsored by Microsoft where we converted a suite of COM - based middleware talking to SQL Server and AS-400 back ends to the .NET platform, as well as providing a .NET and WebService front end to the product.

I had the pleasure of spending several weeks at the MS Testing Lab in Charlotte, NC under the direction of Dennis Bass and his team at Microsoft. While there, I learned how important stress testing and performance analysis really are - especially when they are begun early on in the development process.

Because of many of the lessons learned at the Lab, we were able to obtain a nearly 1000 percent improvement in throughput in the .NET version vs the previous COM - based version. We learned a lot about data caching, both in IIS as well as on the middle tier, and we also learned how to zero in on exceptions that our originally "crappy" code was generating, and how to prevent them. We used internal MS tools such as AD Plus and Mutex Black Box, and were able to see things about the execution of our code that most developers never get to see. One thing many developers new to .NET need to learn is that you must do everything you can to PREVENT exceptions when you code. Exceptions are expensive, and they should never be used to handle business logic.

This book is laid out in ten progressive chapters:

Chapter 1, "Laying the Performance Analysis Ground Work", explains where in the development cycle performance analysis comes in, and provides the background for the methodology used in the book.

Chapter 2, "Preparing and Planning for the Performance Test", gives an overview of the different kinds of information the tester(s) will need and where to get it.

Chapter 3, "Stress Testing with Microsoft Application Center Test (ACT)" is a detailed overview of the ACT application and how it is used. One seemingly glaring omission here is that there is no mention at all of the Web Application Stress Tool (affectionately known as "HOMER"), which remains the only tool available from Microsoft that can control multiple simultaneous test clients, and is actually the tool that I prefer over ACT. HOMER has a COM interface which allows for extensive scripting with VBScript.

Chapter 4, "Monitoring Application Performance with System Monitor", details SysMon and show most of the commonly used performance counters used in stress testing and what they are used for.

Chapter 5, "Application Network Analysis", shows how to use Network Monitor to capture traffic and analyze it to extrapolate response times, bytes transferred, and network round trips.

Chapter 6, "Analyzing and Performance Tuning the Web Tier", deals with information obtained from IIS logs and PerfMon logs and how to use this data.

Chapter 7, "Profiling Managed Code", is a section on all the major details of the CLR and also covers Compuware DevPartner (which has a very nice freeware "Community edition" which I have used, and AppMetrics, another testing application.

Chapter 8, "Analyzing the SQL Tier", has more information about testing and tuning SQL Server than I've seen in any other single book, and in my opinion, this chapter alone is worth double the $39.95 list price of the book.

Chapter 9, "Estimating IIS Tier capacity with Transaction Cost Analysis", is a complete treatise on TCA, a patented technical set of formulae used for measuring a web site's capacity to host users as well as for measuring performance improvements made to an application. A special spreadsheet is provided in the CD ROM that accompanies the book (which also has a fully searchable CHM copy of the entire book, along with many other materials).

Chapter 10, "Performance Monitoring, Tools for Predicting Performance", is a high - level overview of an overall architecture for examining proposed systems in their entirety.

In summary, the ACE team at Microsoft proves that they are indeed world class performance analysts, and the details and information they provide in this book is a clear testament to their dedication and professionalism. If you are a developer or manager whose job it is to design and deploy world class web-based applications, you should have a copy of this book. If you are very sophisticated, you may know some of the things you'll find here, but there will surely be many more that you do not know. Highly recommended.


Peter Bromberg is a C# MVP, MCP, and .NET consultant who has worked in the banking and financial industry for 20 years. He has architected and developed web - based corporate distributed application solutions since 1995, and focuses exclusively on the .NET Platform.