<applicationPool> Element (Web Settings)
Specifies configuration settings that are used by ASP.NET to manage process-wide behavior when an ASP.NET application is running in Integrated mode on IIS 7.0 or a later version.
Important
This element and the feature it supports only work if your ASP.NET application is hosted on IIS 7.0 or later versions.
<configuration>
<system.web>
<applicationPool>
Syntax
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" />
Attributes and Elements
The following sections describe attributes, child elements, and parent elements.
Attributes
Attribute | Description |
---|---|
maxConcurrentRequestsPerCPU |
Specifies how many simultaneous requests ASP.NET allows per CPU. |
maxConcurrentThreadsPerCPU |
Specifies how many simultaneous threads can be running for an application pool for each CPU. This provides an alternative way to control ASP.NET concurrency, because you can limit the number of managed threads that can be used per CPU to serve requests. By default this setting is 0, which means that ASP.NET does not limit the number of threads that can be created per CPU, although the CLR thread pool also limits the number of threads that can be created. |
requestQueueLimit |
Specifies the maximum number of requests that can be queued for ASP.NET in a single process. When two or more ASP.NET applications run in a single application pool, the cumulative set of requests being made to any application in the application pool is subject to this setting. |
Child Elements
None.
Parent Elements
Element | Description |
---|---|
<system.web> | Contains information about how ASP.NET interacts with a host application. |
Remarks
When you run IIS 7.0 or a later version in Integrated mode, this element combination lets you configure how ASP.NET manages threads and queues requests when the application is hosted in an IIS application pool. If you run IIS 6 or you run IIS 7.0 in Classic mode or in ISAPI mode, these settings are ignored.
The applicationPool
settings apply to all application pools that run on a particular version of the .NET Framework. The settings are contained in an aspnet.config file. There is a version of this file for versions 2.0 and 4.0 of the .NET Framework. (Versions 3.0 and 3.5 of the .NET Framework share the aspnet.config file with version 2.0.)
Important
If you run IIS 7.0 on Windows 7, you can configure a separate aspnet.config file for every application pool. This lets you tailor the performance of the threads for each application pool.
For the maxConcurrentRequestsPerCPU
setting, the default setting of "5000" in the .NET Framework 4 effectively turns off request throttling that is controlled by ASP.NET, unless you actually have 5000 or more requests per CPU. The default setting depends instead on the CLR thread-pool to automatically manage concurrency per CPU. Applications that make extensive use of asynchronous request processing, or that have many long-running requests blocked on network I/O, will benefit from the increased default limit in the .NET Framework 4. Setting maxConcurrentRequestsPerCPU
to zero turns off the use of managed threads for processing ASP.NET requests. When an application runs in an IIS application pool, requests stay on the IIS I/O thread and therefore concurrency is throttled by IIS thread settings.
The requestQueueLimit
setting works the same way as the requestQueueLimit
attribute of the processModel element, which is set in the Web.config files for ASP.NET applications. However, the requestQueueLimit
setting in an aspnet.config file overrides the requestQueueLimit
setting in a Web.config file. In other words, if both attributes are set (by default, this is true), the requestQueueLimit
setting in the aspnet.config file takes precedence.
Example
The following example shows how to configure ASP.NET process-wide behavior in the aspnet.config file in the following circumstances:
The application is hosted in an IIS 7.0 application pool.
IIS 7.0 is running in Integrated mode.
The application is using the .NET Framework 3.5 SP1 or a later version.
The values in the example are the default values.
<configuration>
<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" />
</system.web>
</configuration>