IIS App Pool Settings

In this article we’ll explain you about IIS app pool settings. If you have not checked our previous articles, then please check out those before proceeding with current one. Our Previous articles are as follows:

What is IIS?
Application pool in IIS

Key Points of Application Pool

  • It creates isolation between different web applications.
  • It can enhance the performance of website.
  • It Improve manageability of website.
  • Each new application will have its separate App pool, one application will not impact other application.
  • You can limit CPU & memory usages by the given App pool.

Below is the Application pool “Advanced Settings” window where you can do multiple settings as per website need, below we’ll discuss all of these options one by one. Please check out below   

IIS App Pool Settings

IIS “application pool” advanced settings options:

All settings appearing in above image are explained in below section. I hope with the below given explanation you will get deep understanding about application pool’s various configurations.

CLR Version:

Here under these options, we can set the CLR versions of application you can choose correct CLR against your .NET version.

Enable 32-bit application:

Change the “Enable 32-bit Applications” to true (if you want the application pool to start and work in a 32-bit mode). If you have legacy application which runs on 32-bit, then you select it to true. In case of 64-bit supporting application, you can make it false so that 64-bit worker process can be user instead of 32-bit.

Managed Pipeline mode:

There are of two types “Integrated mode” and “Classic mode”. You can find the details of these in below section.

  • Integrated Mode: As the name indicate Integrated mode makes ASP.NET an integral part of IIS. It has many advanced features as compared to Classic Mode. In previous versions Forms Authentication, Session, were the part of ASP.NET only but now it is in IIS and can also be managed from IIS too.
  • Classic Mode: UP to IIS 6.0 there was only classic mode and Integrated mode was introduced after this version. Classic mode uses ISAPI add-on to IIS, and it is used to support backward compatibility but its lacks many of the features in it which are present in integrated mode.

Name:

This section contains the name of “application pool “which you have given at the time of creating this App pool.

Queue Length:

Under this section we can define the Queue limit which means what is maximum number of requests app pool and queue, default is 1000. You can increase this number if your application is having high traffic, if number of requests go beyond 1000 (as per set limit) then server starts throwing internal server error to the users which are accessing website or web API.

Start Mode:

Under this option you have two options using which you can configure App pool to run “On Demand” and or “Always Running”. By default, option is “On Demand”.

CPU: Limit(percent):

Under this option we can restrict the CPU usage that App pool can use. Zero means 100% CPU can be used but we can give percentage here like 50. Using this CPU usage will not go above the defined limits.

Limit Action & Limit Interval (minutes):

Under this option we can set the action which you want to take when CPU threshold is reached (as defined in the above option). As an action you can either opt to kill the worker process exe or “No Action”. In case of “No Action” nothing will be done but event log is written in the window to know when there were maximum CPU usages.

App Pool Identity:  

In Application pool identity we have four Built-in user account: These are the four types of built-in user accounts.

IIS App Pool Settings
  1. Local System: In this local AD user is used on the Web server. It is more trusted and can also access network resources.
  2. Network Service: It is a limited access service account and best for security reasons.
  3. Local Services: It is same as above network services, but it cannot access network resources.
  4. ApplicationPoolidentity: App pool run under the significance of user who has logged in that operating system where application is hosted.

Custom user account:

Under this option you can pass the credential of another user or service/admin account, and it can provide the required access to the app pool. Click on set button in below image, it will ask for the username and password.

App Pool Setting5 - https://codeconfig.in

A custom account is useful in the following situations:

  1. When you want to increase or decrease the security.
  2. In case of multiple customers on server, we can create the users with different set of permission to meet the need of applications. We cannot create on suite fill all type user.

Maximum worker process:

Under this option we can set the number of worker process to the app pool. Worker process exe w3wp.exe is mainly responsible for all activities of app pool. Increasing the worker process may also increase your application performance but at least it also depends upon your hardware configuration too. Please note you can get issue with multiple worker process if you are using sessions.

Let’s understand this with the help of example, suppose you have set 2 worker processes, as we know session is stored on server in worker process. So, session will get stored in, say first worker process and every time request is not server by First worker process which is having session in it. When request will go to worker process number two, it will not have session and your request will break. Only request which will be served by second worker process will break whereas others will work.

How to Control CPU and Memory usages

Under CPU you can see “Limit (Percent)” – Under this option we can restrict the CPU usage that specific Application pool can use. 0 or 100 means 100% CPU can be used but we can give percentage here like 50. Using this option CPU usage will not go above the defined limits. You can check more of CPU and Memory usages in our separate article HERE.

How to handle large number of requests and avoid 503 “Server Unavailable” error.

Under application pool advanced settings, you can see one option “Queue length” with value 1000 which means system can queue up to 1000 requests in its queue, next coming request will start receiving 503 “Server Unavailable” error.

To fix this issue, you can increase its value to 2000 or more as per the need of your application traffic. 1000 is the default value and you need to change this only when your application is having large traffic.

App Pool Queue Length - https://codeconfig.in

I hope with above explanation you will get understand about the IIS, application pool and also about its various configurations. For more information you can refer Microsoft Docs.