Knowledge Essentials - 3Essentials Hosting

application pool definition

Article ID: 306

 Back to Search

Application Pool:  Windows IIS web server implements a concept called the application pool which is designed to enhance web server stability and security through process isolation.  Process isolation means CustomerA's website code executes under one process on the server, and CustomerB's code executes under another process. 

In general, the Windows IIS Web Server handles all basic, static HTML processing... i.e., if a visitor goes to your site and gets index.html, the core IIS webserver process will handle retrieving this html file, and sending the contents to the visitor's browser.  But for "dynamic code", script based files like ASP and ASP.net, the webserver will hand this request over to an application pool.  An application pool is a seperate process which can host this type of dynamic content.  To keep each customer's code separated, shared hosting providers will use a separate application pool for each website.  Each application pool will run under a user ID unique to that website/customer. 

The image above depicts this scenario... requests coming in for domain1.com are handed off to an application pool dedicated to just domain1.com.  This offers great advantages for stability and security, explained here by example:

  • if domain1.com has written bad ASP code, and it keeps hanging up the process, it won't affect domain2.com... because domain2.com's code is executing in it's own process space.
  • each website only has permissions granted only for their own unique user... so processes running under domain1.com's application pool cannot access domain2.com's files.
  • if domain3.com is doing something malicious, it's doing it under domain3.com's unique user id, allowing us to quickly identify who is responsible and shut it down.

3Essentials utilizes Plesk Control Panel to manage our Windows hosting servers, and it will use one or two of these unique IDs depending on the version... here's clarification:

  • Plesk versions 7.0.3 and below (web4, web6, web8) will use a single unique user id for all execution within your site, and the user id will be IUSR_something
  • Plesk versions 7.5.6 and above (web10, web12, web14, web16) will use two unique user id's for execution within your site:
    • IUSR_something will be used for static content (html files) and PHP, PHP-CGI 
    • IWPD_something (assigned to the application pool) will be used for ASP and ASP.net

Related articles.

 

 

 
Downloads Associated With This Article
No downloads are currently associated with this article.