IIS - Every website needs its own application pool

posted on 24 December 2007 | posted in IIS


When adding websites to your server, make sure to give each one its own application pool. This effectively isolates each website from an application crash. This is good for two reasons:-

  • If one application pool crashes, it doesn't affect the others
  • It's much easier to identify the site that is having the problem when all sites are in their own application pool - i.e. it's the ONLY site having issues

What's an application pool?

It's an area that processes requests from website(s). If there's a crash, this area is normally "recycled" (reset) in order for it to work again. The recycle happens after a defined time - meaning your website is effectively down until the recycle occurs. This is a very cursory explanation of what an application pool is, but for this article, it's all you need to know.

Default settings in IIS

When you add a website to your server, it's automatically added to the Default Application Pool (DefaultAppPool, found in IIS > Application Pools). This means that unless you intervene, all your sites are running in the same application pool. Not Good.

Symptoms of an application pool crash

When you get an application pool crash, your website(s) in that pool stop responding. You will see no error - just they will freeze and nothing happens when you try to load the website in a browser. This will appear to be intermittant because in reality the application pool is recycling (resetting) after a crash. If it's the first time you experience this, it can be very puzzling and ultimately frustrating because there's no apparent clue as to what is happening.

What to do if your sites have these symptoms

Go to IIS, then right click on DefaultAppPool (under Application Pools) and select Recycle. This forces an immediate recycle. Then go to back to your browser and immediately refresh the page that just hung a moment ago. If the page reloads fine, this will give you the clue that what occurred was an application pool crash.

The second step is to separate ALL of your websites into their own application pool. This protects each site from the rest and also effectively "quarantines" the offending website. Once you give each website their own application pool, you should only get such crashes with one of the sites - the one causing the problems. You'll then need to investigate what is causing the issue (this cannot be determined in this article).

How do I give each website its own application pool?

1. In IIS, right click on Application Pools > New > Application Pool. Call the new pool something meaningful like the domain name of the website you want to add into the pool. Right click on the new application pool you've created and select Properties. Ensure that under the Identity tag, the Application Pool Identity is set to Predefined and Network Service is selected. Not having this configuration will cause issues with your Virtual SMTP server.

2. In IIS, right click on the website you want to add to the pool (from the list of websites under Web Sites). Click Properties > Home Directory. Then at the bottom, select the Application Pool you've just created and Apply. It should automatically assign the new application pool with the website (no need to restart IIS).

More details can be found in this excellent article:-

Working With Application Pools in Internet Information Server
 

recommend a friendRecommend this blog entry to a friend