IIS Application Warm-Up Module

First the good news: This module/add-in/extension (pick your favorite naming convention) for Internet Information Services (IIS) is one that helps ease an age old problem: the first user to request a page from a site that’s not currently loaded sees a slow response time.

Now the bad news: it’s no longer available. BUT, before you click away to see what the local weather’s like, I’ve been told from the IIS team that this module will be re-tuned for the next version of IIS (many thanks to all of the Beta testers for their feedback).

So while some of the screens may change and perhaps functionality, let’s go over what in essence this warm-up module can do and some of the benefits it provides.

Benefits

Decrease the response time for first requests by pre-loading worker processes: The IIS Application Warm-Up module lets you configure the Web application to be pre-loaded before the first request arrives so that the worker process responds to the first Web request more quickly.

Increase reliability by pre-loading worker processes when overlapped recycling occurs: Because the recycled worker process in an overlapped recycling scenario only communicates its readiness and starts accepting requests after it finishes loading and initializing the resources as specified by the configuration, pre-loading the dependencies reduces the response times for the first requests.

Customize the pre-loading of applications: Configuration of the IIS Application Warm-Up module to initialize Web applications by using specific Web pages and user identities. This makes it possible to create specific initialization processes that can be executed synchronously or asynchronously, depending on the initialization logic. In addition, these procedures can use specific identities to ensure a proper initialization.

Installation

The install couldn’t be easier – execute the setup package and presto-change-oh the module gets installed. As of this writing installation can only be completed on Windows7/Server 2008 R2 that has IIS 7.5 installed. No restart of the service was required and functionality was available through IIS immediately.

Main Configuration

There are only two settings to configure on this screen and while they're pretty straightforward, the one item I will highlight is the second checkbox. If you do not select “Start Application Pool [insert specific application name here] when service started”,warm up occurs when the application pool is recycled, but not after a system reboot or when the IIS service restarts.

Add Request

Next on the list is to configure the actually request itself. Here a “Default.aspx” page will be requested; a status code range is given (if outside the range the module logs it in the event log), a request mode is chosen (synchronously or asynchronously) along with an optional parameter being passed named “WarmUpRequest.” This parameter will be added to the request as a server variable (WARMUPCONTEXT); this lets you check for this request variable in code, which in turn lets can distinguish requests that were sent from the Warm-Up module from regular requests.

User Context

The last setting is whether to specify an identity other than the current process identity that the IIS application pool is using (if applicable). In my example I’m using Windows authentication but there are multiple modes and types to choose from.

Summary

So where do we go from here? Good question. Unfortunately I don’t have a direct answer. I’m certainly going to keep tabs on the development of this module as improving the responsiveness of a web site/application is extremely valuable. More so today as we all have a short attention span so a second here or 3 seconds there could make the difference between a good user experience vs. a bad one (or lost revenue if we’re discussing an ecommerce site). Stay tuned…

To download other Microsoft extensions for IIS, visit: https://www.iis.net/extensions or for more information on IIS visit: https://www.microsoft.com/windowsserver2008/en/us/internet-information-services.aspx