<applicationPool> 元素(Web 设置)

指定当 ASP.NET 应用程序在 IIS 7.0 或更高版本上的集成模式下运行时,ASP.NET 用于管理进程范围的行为的配置设置。

重要

仅当 ASP.NET 应用程序托管在 IIS 7.0 或更高版本上时,它才支持此功能。

<配置><system.web><applicationPool>

Syntax

<applicationPool
    maxConcurrentRequestsPerCPU="5000"
    maxConcurrentThreadsPerCPU="0"
    requestQueueLimit="5000" />

特性和元素

下列各节描述了特性、子元素和父元素。

特性

Attribute Description
maxConcurrentRequestsPerCPU 指定每个 CPU ASP.NET 允许的同时请求数。
maxConcurrentThreadsPerCPU 指定每个 CPU 的应用程序池可以同时运行的线程数。 这提供了一种控制 ASP.NET 并发的替代方法,因为可以限制每个 CPU 可用于处理请求的托管线程数。 默认情况下,此设置为 0,这意味着 ASP.NET 不会限制每个 CPU 可以创建的线程数,尽管 CLR 线程池也会限制可以创建的线程数。
requestQueueLimit 指定可在单个进程中排队 ASP.NET 的最大请求数。 当两个或更多个 ASP.NET 应用程序在单个应用程序池中运行时,对应用程序池中的任何应用程序发出的累积请求集受此设置的约束。

子元素

没有。

父元素

元素 Description
<system.web> 包含有关如何 ASP.NET 与主机应用程序交互的信息。

注解

在集成模式下运行 IIS 7.0 或更高版本时,此元素组合允许配置当应用程序托管在 IIS 应用程序池中时如何 ASP.NET 管理线程和队列请求。 如果运行 IIS 6 或以经典模式或 ISAPI 模式运行 IIS 7.0,则忽略这些设置。

这些 applicationPool 设置适用于在特定版本的 .NET Framework 上运行的所有应用程序池。 设置包含在 aspnet.config 文件中。 此文件的版本适用于 .NET Framework 版本 2.0 和 4.0。 (.NET Framework 版本 3.0 和 3.5 与版本 2.0 共享 aspnet.config 文件。

重要

如果在 Windows 7 上运行 IIS 7.0,则可以为每个应用程序池配置单独的 aspnet.config 文件。 这样,便可以为每个应用程序池定制线程的性能。

对于该 maxConcurrentRequestsPerCPU 设置,.NET Framework 4 中的默认设置“5000”实际上会关闭由 ASP.NET 控制的请求限制,除非你实际上每个 CPU 有 5000 个或更多请求。 默认设置取决于 CLR 线程池,以自动管理每个 CPU 的并发。 使用异步请求处理或网络 I/O 上阻止许多长时间运行的请求的应用程序将受益于 .NET Framework 4 中增加的默认限制。 设置为 maxConcurrentRequestsPerCPU 零会关闭使用托管线程来处理 ASP.NET 请求。 当应用程序在 IIS 应用程序池中运行时,请求保留在 IIS I/O 线程上,因此 IIS 线程设置会限制并发。

requestQueueLimit 设置的工作方式与 requestQueueLimitprocessModel 元素的属性相同,该属性是在 ASP.NET 应用程序的 Web.config 文件中设置的。 但是, requestQueueLimit aspnet.config 文件中的设置将 requestQueueLimit 替代 Web.config 文件中的设置。 换句话说,如果两个属性都已设置(默认情况下为 true), requestQueueLimit 则 aspnet.config 文件中的设置优先。

Example

以下示例演示如何在以下情况下在 aspnet.config 文件中配置 ASP.NET 进程范围的行为:

  • 该应用程序托管在 IIS 7.0 应用程序池中。

  • IIS 7.0 正在集成模式下运行。

  • 应用程序正在使用 .NET Framework 3.5 SP1 或更高版本。

示例中的值是默认值。

<configuration>
  <system.web>
    <applicationPool
        maxConcurrentRequestsPerCPU="5000"
        maxConcurrentThreadsPerCPU="0"
        requestQueueLimit="5000" />
  </system.web>
</configuration>

另请参阅