Before we understand Application Pools we need to understand
the HTTP Protocol Stack (HTTP.sys). HTTP protocol stack is between the
operating system kernel and the HTTP requests. It receives the HTTP requests and
routes them to the appropriate HTTP request queue. Apart from doing this it
also caches the responses and does the Quality of Service functionalities (QoS)
like maintaining bandwidth, connection timeouts and connection limits.
When IIS 6.0 runs in worker process isolation mode, we have
the option of grouping different Web applications into groups. This concept of
grouping applications is known as Application pools. An application pool is a
group of one or more Web Sites that are served by a worker process or set of
worker processes. We use Application pools to make our applications more
robust. By using this approach if a worker process fails it does not affect
other worker processes in other application pools. Also, while grouping the
application we can apply the configuration settings to the group as a whole.
Before this approach Inetinfo.exe was the central process
based on which loading the execution of the application was done. Now, with Worker
process isolation mode it enables us o completely separate an application in
its own process without the dependency of InetInfo.exe.
More about Application Pools
1.
Multiple Application Pools – We can have multiple application pools
configured. All these application pools can run in parallel. We can assign an
application to multiple application pools. Thus, if once application pool is
busy processing a request the other application pool can take the incoming
request.
2.
Application Pool Health Monitoring – As discussed above, it is the job
of WWW service to monitor the health of the worker process. The WWW service
pings the worker process and waits for the response. If the worker process
fails to respond to the pings then WWW service terminates the worker process
and creates a new worker process. The time interval for the pinging can is
configurable. Figure 1 below shows the same.
Figure 1
If an
application fails repeatedly for a specified number of times while responding
to the requests, we can configure to safe guard the application. This feature
is known as Rapid fail protection. If this feature is set to on and an
application misbehaves, then worker process will be forcefully shut down and
restarted. Figure 1 shows the same settings. Health monitoring also applies for
the application pools. Rapid fail protection also stops the application pools
in case of an emergency. These are the different ways by which we can have the
Application pools stopped by the health monitoring.
·
When the Rapid fail protection action occurs
·
If the application Pool reaches the maximum CPU usage limit. The
maximum CPU percentage can be configured. Figure 2 shows the same.
·
When a configuration error occurs
·
When the windows administrator performs the graceful shutdown of
the application pools
Figure 2
3.
Orphaning Worker Process – Orphaning worker process is a special mode of
worker process. When this mode is on and if a worker process has some errors,
WWW service does not restart or shut down the worker process, rather it removes
the worker process from the Application pool. By using this mode the other
worker processes in the Application pool can be safe guarded in case of any
problem with one worker process.
4.
Web Gardens – It is to be noted that by default an application pool has
only one worker process. Web gardens are application pools that are configured
to run multiple worker processes. By using Web Garden mode it can handle more
loads and reduce the response time. If one worker process is busy, the other
worker process can attend to the new incoming requests.
5.
Processor Affinity – In a multi processor environment we can use this
setting to see that the application pool runs on the specific Processor or CPU.
6.
Application Pool Identity – Figure 3 shows the Application pool identity
settings. For any process to run under Windows NT system it needs to have a
process identity to access the resources. Process identity is mandatory for a
process under operating system control. Application pool identity is the user
account that the worker processes running in the application pool use as their
process identity. It is always recommended that the Application Pool identity
is given the minimum permissions. This is for the security perspective.
Figure 3
7.
Idle Timeout- Using this setting for an Application pools, the worker
process can request for a shutdown. This enables freeing up the unused
resources. Figure 4 shows the same.
Figure 4