New Reliability Features
Microsoft has done a great job of re-architecting IIS to be more reliable and robust. Perhaps the most significant modification is the emphasis on the Worker Process Model
, which affects reliability as well as security (see the section entitled "Configurable Worker Process Identity" on the preceding page). In IIS 4, this concept was initially known as "Running an application in a separate memory space
IIS separates all user code from its WWW service. The user application (different Web sites) functions as a separate Internet Server Application Programming Interface (ISAPI) application. The separate ISAPI work space is called a worker process
. IIS 5.0 ran each Web site configured as a separate application in its own memory space (a separate instance of the inetinfo.exe
application). In contrast, IIS 6.0 worker process Web sites don't run within the inetinfo.exe (WWW services) memory space at all; therefore an error (or malicious attack) in one particular Web site will not cause the entire Web server to shut down. You can configure worker processes to run on a specified CPU. Each worker process model stores application-specific data in its own memory space, whereas IIS 5.0 stored all application-level data within the inetinfo.exe
memory space. This separation, which makes application-level data independent of other Web sites running on the same machine also makes it feasible to not only to assign a Web site to run on a specific CPU, but also to dedicate more resources to popular Web sites than to those that generate less traffic.
|Author's Note: IIS 6.0 runs in the worker process model by default. You can also configure IIS 6.0 to run in "IIS 5.0 isolation mode".
Automatic health detection simplifies IIS Web site management. IIS performs health detection for all worker processes, which adds another level of reliability to the Web applications. The inetinfo.exe
process (IIS) checks the availability of each worker process periodically. You can configure the check interval using the IIS manager applet (it's 240 seconds by default). Therefore IIS will maintain a "heart beat
" between its worker processes that's similar to the ping
facility. During each beat, the IIS server tries to communicate with worker processes to make sure that they are alive.
New Request-processing Architecture
In Windows 2003 server, the HTTP stack is implemented as a kernel mode device driver called HTTP.sys
. All incoming HTTP traffic goes through this kernel process, which is independent of the application process. IIS 6.0 itself is an application process and is external to HTTP.sys
. Application processes run in user mode
and the operating system functions are run in kernel mode
. HTTP.sys is responsible for:
- Connection managementmanaging the database connections from the ASP.NET pages to data bases
- Cachingreading from a static cache as opposed to recompiling the ASP.NET page
- Bandwidth throttlinglimiting the size of the Web requests to a Web site
- Text based loggingwriting IIS information into a text log file
In IIS 5.0, the HTTP request was handled by the IIS inetinfo.exe
application. In IIS 6.0, HTTP.sys
relieves IIS of request-handling responsibility. In doing so, it enhances IIS performance in the following ways.
- HTTP.sys enables caching (referred to as flexible caching) at kernel level so that static data can be cached for faster response time (independent of the user mode caching). You need to be careful with flexible caching. Since HTTP.sys is separate from IIS we may still cache old data after a IIS restart.
- HTTP.sys introduces a mapping concept called "application pool." Application pooling allows Web sites to run together in one or more processes, as long as they share the same pool designation. Web sites assigned to different application pools never run in the same process. A central Web site (such as a credit card verification Web site) can be accessed by all the other miscellaneous sites (such as shopping cart E- Commerce sites) by using application pooling. By using the correct application pool information HTTP.sys can route the HTTP traffic to the correct Web site.
- The HTTP.sys application pool concept increases the number of Web sites you can host host on a single machine. It also increases performance and provides more control over access to valuable IIS resources.