<applicationPool> 元素(Web 设置)

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

重要

仅当你的 ASP.NET 应用程序托管在 IIS 7.0 或更高版本上时,此元素及其支持的功能才起作用。

configuration
  <system.web>
    <applicationPool>

语法

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

特性和元素

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

特性

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

子元素

无。

父元素

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

备注

在集成模式下运行 IIS 7.0 或更高版本时,此元素组合允许你配置当应用程序托管在 IIS 应用程序池中时 ASP.NET 管理线程和对请求进行排队的方式。 如果在经典模式或 ISAPI 模式下运行 IIS 6 或运行 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 设置的工作方式与 processModel 元素的 requestQueueLimit 属性相同,该元素在 ASP.NET 应用程序的 Web.config 文件中设置。 但是,aspnet.config 文件中的 requestQueueLimit 设置会覆盖 Web.config 文件中的 requestQueueLimit 设置。 换句话说,如果设置了这两个属性(默认是这种情况),则 aspnet.config 文件中的 requestQueueLimit 设置优先。

示例

以下示例显示了在以下情况下如何在 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>  

请参阅