指定当 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>