ResourcesIIS 6.0 Performance Tune-Up
By now you've probably gotten to know IIS 6.0, available in all versions of Windows Server™ 2003, and are taking advantage of much that this Web server offers. It's important to keep an eye on the overall goal of IIS 6.0: providing an optimal Web experience for your customers. The resources discussed here will help you tune your IIS 6.0 installation for optimal performance.
Most of these resources are from Microsoft; they range from very short to encyclopedic. They all assume familiarity with IIS 6.0 and the Windows Server 2003 environment, and the intended audience includes IT administrators, operations staff, developers, and architects. Not all the resources will exactly suit each of those professional groups—an IT administrator won't be directly concerned with the nuts and bolts of building a Web application, for example, but will be interested in the application design so as to better manage the application pools.
In short, there's plenty of technical material—online technical documentation, on-demand webcasts, PowerPoint"> 2003, and are taking advantage of much that this Web server offers. It's important to keep an eye on the overall goal of IIS 6.0: providing an optimal Web experience for your customers. The resources discussed here will help you tune your IIS 6.0 installation for optimal performance.
Two Short Places to Start
When you have only a moment to delve into the IIS 6.0 performance question, start with this how-to article posted in November 2002: Performance Tuning Your IIS Web Server. Brief and to the point (just over four screens), it covers using and customizing Performance Monitor, tuning your Web server memory for optimal IIS performance, adding performance counters and alerts, monitoring server CPU utilization, using Task Manager (including an easy way to check on application memory leaks), and using Event Viewer.
A bit longer is Fundamentals of Web Site Acceleration: Performance Starts at the Web Server, a white paper from Port80 Software, which develops IIS 6.0 security and performance tools. The mantra for this clearly written and well-organized paper (178KB download, nine pages in Adobe Acrobat Reader) captures the fundamental Port80 Software IIS 6.0 optimization strategy: "Send as little data as possible, and when you must send data, do so as infrequently as possible."
To achieve that goal, this fundamentals paper advocates three basic performance-improvement approaches, all of which emphasize software and process enhancements to Web front-end source code and the origin server rather than expensive, cumbersome hardware solutions: code optimization, cache control, and HTTP compression. Port80 Software does, of course, offer tools for working in those three areas, but they do so unobtrusively and, more importantly, provide guidelines for you to think about as you consider whether you need add-on tools and different tools options from other sources as well.
The next three items are the heavy hitters in the lineup, the detailed and in-depth texts that form the basis for the webcasts and slide shows. Web and Application Server Infrastructure—Performance and Scalability, written by Bill Karagounis of Microsoft (when he was a Lead Program Manager on the IIS team) is the "textbook reading" behind several of the other resources covered here. It is intended for a thoroughly technical audience—operations staff, IT administrators, developers, and architects. It's a Web page but the equivalent of 50 or 60 printed pages, so don't count on absorbing the entire content in a single sitting. The page does provide jump heads for easy navigation, and the text includes plenty of supplementary graphics and tables.
This article explains the Windows Server 2003 Web and application server infrastructure with an eye to both the business benefits to be realized and the creation of a solid foundation for .NET-based applications and Web services. The four main sections cover architecture (for all four audience groups), programming (primarily for developers and architects), performance (for all four audience groups), and application scenarios (primarily for operations staff and IT administrators).
"Performance Tuning", one section of the comprehensive and exhaustive Internet Information Services 6.0 Product Documentation, is an excellent place to start if you want to further solidify your IIS 6.0 operational fundamentals before delving into the technical esoterica.
The subsections, each on its own Web page, comprise terse how-to summary information on HTTP compression and keep-alives, limiting connections and setting connection timeouts, throttling bandwidth, enabling CPU monitoring, configuring application pool queue length limits, and scalability.
The detailed discussion on each of those topics appears in a must-have item for IIS mavens: the Internet Information Services (IIS) 6.0 Resource Kit. You can download the 42.6MB document in .zip format, or you can pick and choose individual chapters in .doc format. Part 1, which includes seven chapters and two appendices, covers deployment. Part 2, which includes 11 chapters and seven appendices, covers operation and performance. Of special interest is Part 2, Chapter 6, "Optimizing IIS 6.0 Performance".
To drill down into the subject of building .NET-based applications, curl up and spend some time with Improving .NET Application Performance and Scalability. You'll need plenty of time to take in all this comprehensive Patterns & Practices resource offers.
For architects, designers, developers, testers, and administrators, this guide provides assistance for managing performance and scalability throughout your application lifecycle and provides a framework that organizes performance into categories. It provides processes for modeling performance, measuring, testing, and tuning your applications and for improving the performance of managed code, ASP.NET, Enterprise Services, Web services, remoting, ADO.NET, XML, and SQL Server™.
Viewable online or downloadable in PDF format (6.1MB, 1120 pages), the guide is organized into five sections:
- Introduction to Engineering for Performance (Chapter 1)
- Designing for Performance (Chapters 2-4)
- Application Performance and Scalability (Chapters 5-13)
- Database Server Performance and Scalability (Chapter 14)
- Measuring, Testing, and Tuning (Chapters 15-17)
And as if to put new shades of meaning on the words "thorough" and "follow through," the guide includes four features beyond its text that further extend its usefulness:
- "Performance Best Practices at a Glance" summarizes the solutions presented in "Improving .NET Application Performance and Scalability" and provides links to the detailed material in the guide so you can easily locate the information you need to implement the solutions (for example, "How to Improve Code Access Security Performance").
- "Fast Track—A Guide for Getting Started and Applying the Guidance," aimed primarily at managers who want to implement the guidelines set forth in the technical material.
- Checklists: printable, task-based quick-reference sheets to help you put the information and details that you learned in the individual chapters into action (for example, "Checklist: Managed Code Performance").
- A host of task-specific how-to instructions complete with example code and cross-references back to the full text (for example, "How To: Use CLR Profiler").
- A list of newsgroups covering development and performance in the .NET Framework, common language runtime (CLR), caching, and several ASP.NET topics (not in the document itself, but toward the foot of the Improving .NET Application Performance and Scalability page).
Three webcasts offer an excellent way of obtaining much the same information as in the text-based resources already noted, but with the additional dimensions of both visuals and commentary from Chris Adams, Microsoft Web Platform Supportability Lead. Chris is an authoritative IIS information source, having spent several years at Microsoft supporting IIS products. He is a certified MCP, MCSA, and MCSE on the Microsoft Windows NT® 4.0 and Microsoft Windows 2000 platforms.
Primarily for system administrators is Have Your Cake and Eat It, Too: Understanding How ASP.NET Works with IIS 6.0, a 90 minute, intermediate-level TechNet production. Titled "Scalability & Reliability Best Practices for IIS 6.0" on the first slide, the presentation reviews the ways in which IIS 6.0 works differently from previous releases, then covers many reliability and scalability features and best practices. In so doing, Adams provides some specific, real-world system management advice, such as what to look for, what to change, and what to leave alone—as if he were a sysadmin himself. He clearly understands the challenges people in that role face in overseeing Web servers.
The presentation assumes your familiarity with IIS 6.0 and maintains a rapid pace throughout its discussion, whiteboard note-taking, and demonstrations using built-in system tools. For further reading, it suggests the IIS Resource Kit already mentioned, especially Part 1 Chapter 4 and Part 2 Chapters 2, 6, and 7, and a paper on ASP.NET performance monitoring.
In Lessons Learned with IIS 6.0 (45 minutes) Adams is quite frank in discussing many of the lessons learned at Microsoft subsequent to the release of IIS 6.0 and explains the rationale, for better or worse, behind some of the software's coding. Further, he provides numerous specifics, not all of which are summarized on the presentation's slides, about what to do in different situations and under different conditions. This webcast is not really a "tips and tricks" collection, but rather a session that addresses some of the specific issues users have raised as of mid-2004.
Tips and Tricks for Optimizing Performance in IIS 6.0 (90 minutes), which Adams co-presents with Jeffrey Johnson, who provides the IIS Performance Test Lead perspective, is an advanced-level presentation for the IT professional wanting peak performance from an IIS 6.0 Web server.
Adams and Johnson provide plenty of tips and tricks and demonstrate some tools, but Adams is careful to point out that they're offering basic frameworks, not one-size-fits-all panaceas or actions. Topics include network latency; efficient coding practices; and methods to ensure that IIS 6.0 serves content the right way, at the right time. It also examines some of the performance tools the IIS product group uses and concludes by making these points:
- Performance is ultimately driven by key decisions affecting, in this order of importance, end users (if they're unhappy, soon everyone becomes unhappy), throughput (the value-per-second rates you're getting), and capacity (analyze the real problem rather than throw money at it)
- You must understand your applications and how end users actually use them before you can really tune for performance
- Attack your current bottleneck as the best way to improve performance
- Don't count on an immediate, magical solution—performance improvements are achieved iteratively
- Test your application scenarios thoroughly
Adams and Johnson suggest three additional webcasts that are of particular interest:
- "IIS Data Mining with Log Parser 2.x"
- "Recycling IIS 6.0 Applications: The Good, the Bad, and the Ugly"
- "Using Granular Compression in IIS 6.0"
The IIS Webcast Catalog
To find those three titles, as well as the entire catalog of IIS-specific webcasts going back to July 2003, go to Internet Information Services Webcasts. That page also has links to the schedule of upcoming webcasts and the complete Microsoft collection. The latter page includes webcasts on all subjects, though, not just IIS, so use the Ctrl-F search window to quickly find terms and topics of interest to you.
Phil Sherwood (email@example.com) is principal of Witan Consulting, which provides technical and marketing writing, products and program management, and general business management support to both small businesses and large technology development companies.
© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; reproduction in part or in whole without permission is prohibited.