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.