IIS Applications pools are critical to many operations environment as it allows administrators to potentially reduce costs by consolidating multiple web servers and still maintain many aspects of redundancy that explicitly available on individual servers. Application pools by definition promote reliability (failure in one service does not mean failure to all) and security (compromises to one service may not mean all services are at risk).
With IIS 5.0 application pools were limited to only 3 levels:
- Low - This level ran in Inetinfo.exe. Inetinfo also hosted the IIS core processes. Therefore if an application failed and halted or hung its host process, the entire Web server would stop.
- Medium - Applications share an instance of dllhost.exe. This would isolate the application from Inetinfo, failing applications therefore would not halt the Web server.
- High (isolated) - Application could be assigned their own pool, isolated from both inetinfo and other dllhost instances.
IIS 6.0 has a much more robust model and in fact you are permitted to run as many pools as your server would allow. I was given a couple of great articles that highlight the how to configure App pools in IIS, and a paper on the manifold benefits of isolation in IIS 6.0.