Windows Tip Sheet

Unlocking IIS 6.0, Part 1

Improve the performance of Web apps with some application pool and worker process tune-ups.

This week’s tip is the first in a series of four tips specific to IIS 6.0.

IIS 6.0 is a major re-architecture over previous versions, and one of its most exciting new features is application pools. Simply put, an application pool is a standalone area of memory (and associated threads of execution) dedicated to one or more Web sites. IIS only comes with one app pool by default, and all Web sites are assigned to it.

That’s far from ideal: If a Web site crashes or gets carried away with itself, everything else in the pool will be affected. A more sophisticated approach is to create one application pool for each major Web site (also referred to in this sense as a Web application) on a server. Doing so gives each Web site dedicated memory and process space, protecting it from other Web sites running on the same server.

Application pools have their own configurations, which mainly revolve around the pool’s worker processes. A worker process is simply the process which takes care of running the Web site; each pool has at least one process associated with it, which keeps each pool running independently. You can configure pools to have multiple worker processes, which creates something Microsoft calls a Web garden. Incoming requests are distributed across the available processes, creating better load balancing and better multiprocessing capabilities. Here’s a tip: If your Web servers have multiple processors, always give each pool two or more worker processes to work with, since worker processes can be easily distributed (by Windows, not you) across processors.

Worker processes themselves can be recycled by IIS automatically. This recycling ends the process and frees all its memory; the process is then immediately re-started to begin handling new incoming requests. The purpose of the recycling is to handle Web applications which may leak memory or have other issues that accumulate over time: By recycling, those issues are periodically “reset,” making IIS more resistant to poorly programmed Web applications.

While IIS 6.0 is a great performer (and very stable) in its default configuration, creating additional application pools and worker processes can help Web applications perform better, remain running even if another Web app on the same server fails, and make Web app management easier.

More Resources:

  • Find more IIS tips and answers here.
  • See Microsoft’s application pool architecture simulation.
  • Read Paul Fallon's blog on IIS architecture.

About the Author

Don Jones is a multiple-year recipient of Microsoft’s MVP Award, and is Curriculum Director for IT Pro Content for video training company Pluralsight. Don is also a co-founder and President of PowerShell.org, a community dedicated to Microsoft’s Windows PowerShell technology. Don has more than two decades of experience in the IT industry, and specializes in the Microsoft business technology platform. He’s the author of more than 50 technology books, an accomplished IT journalist, and a sought-after speaker and instructor at conferences worldwide. Reach Don on Twitter at @concentratedDon, or on Facebook at Facebook.com/ConcentratedDon.

comments powered by Disqus
Most   Popular