为什么即使请求执行低于其限制,请求排队也很高?
我们正在使用以下设置
- 目标框架:.Net 3.5 框架
- 应用程序池:.Net Framework v2.0.50727 与托管管道模式 - 集成
- 而且,没有 CPU 是 8 所以 maxconcurrentRequestperCPUx8=96
- 内存:24 GB
在 machine.config 和 aspnet.config 中使用默认设置
我们使用 ACT 进行了测试并进行了性能计数器。
ASP.NET 应用程序 v2.0.50727(_LM_W3SVC_2_ROOT)\请求执行
ASP.NET v2.0.50727\Requests 排队
现在我们进行了以下更改
在 aspnet.config 中
<system.web>
<applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
</system.web>
在 machine.config 中
<system.web>
<processModel autoConfig="false" maxWorkerThreads="4095" maxIoThreads="4095" minWorkerThreads="2047" minIoThreads="2047" />
</system.web>
并提供 Application Pool Queue Limit=5000 现在我们的请求队列相对较少,并且执行的请求较高,如下图所示!!
ASP.NET 应用程序 v2.0.50727(_LM_W3SVC_2_ROOT)\请求执行
ASP.NET v2.0.50727\Requests 排队
但令人惊讶的平均。ACT 的每秒响应时间没有改善。
所以我有以下问题......</p>
1)即使请求执行低于其限制(在我的情况下,CPU x maxconcurrentrequestperCPU = 8 x 12 = 96),为什么会有请求排队?
2) 即使更改aspnet.config、machine.config 并提供Application Pool Queue Limit=5000,为什么会观察到请求排队?
3) 为什么请求执行计数器越高,ACT 响应时间没有改善?
任何帮助表示赞赏!
谢谢,
桑迪普库马尔·古普塔