gpt4 book ai didi

asp.net - IIS7集成管道: Interaction between maxConcurrentRequestsPerCPU and requestsQueueLimit settings

转载 作者:行者123 更新时间:2023-12-01 23:24:49 27 4
gpt4 key购买 nike

首先,这里对 IIS7 HTTP 请求生命周期以及影响性能的各种设置进行了很好的概述:

ASP.NET Thread Usage on IIS 7.0 and 6.0

非常具体的是,在 dotNet 4 中,ma​​xConcurrentRequestsPerCPUrequestsQueueLimit 的默认值设置为 5000。相当于:(在 aspnet.config 中):

<system.web>
<applicationPool
maxConcurrentRequestsPerCPU="5000"
maxConcurrentThreadsPerCPU="0"
requestQueueLimit="5000" /> (** see note below)
</system.web>

在我看来,在多 CPU/核心服务器上,这里的 requestQueueLimit 总是会在“perCPU”限制之前调用。因此,如果每个 CPU 最多 5000 个请求是您实际想要的,那么我预计 requestQueueLimit 需要增加到 5000 * CPUCount 或完全禁用。

我的解释正确吗?如果是这样我可以禁用 requestQueueLimit 吗? (将其设置为零?)。有关此设置的文档似乎没有解决这个问题(所以也许我遗漏了一些东西或误读了?)

** 上述文章的附注:requestQueueLimit 的命名很糟糕。它实际上限制了 ASP.NET 可以同时处理的最大请求数。这包括排队的请求和正在执行的请求。如果“Requests Current”性能计数器超过 requestQueueLimit,新传入请求将被拒绝,并显示 503 状态代码)

最佳答案

***我的解释正确吗?

是的,如果您想同时执行超过 5000 个请求,则需要增加 requestQueueLimit。 requestQueueLimit 限制系统中的请求总数。由于其遗留问题,它实际上是系统中的请求总数,而不是某个队列中的请求数。它的目标是防止服务器由于物理内存、虚拟内存不足等原因而崩溃。当达到限制时,传入的请求将收到快速的 503“服务器太忙”响应。顺便说一句,系统中当前的请求数由“ASP.NET\Requests Current”性能计数器公开。

***我可以禁用 requestQueueLimit 吗? (将其设置为零?)

您可以通过将其设置为一个较大的值(例如 50000)来有效地禁用它。您必须在 aspnet.config 文件中设置该值我怀疑您的服务器是否可以处理 50000 个并发请求,但如果是这样,则将其加倍。将其设置为零不会禁用它...奇怪的是,这意味着不能同时执行多个请求。

顺便说一句,v4 中似乎有一个错误。对于集成模式,只有在 aspnet.config 文件中将 requestQueueLimit 配置为 described on MSDN 时,它才会成功读取 requestQueueLimit 的值。 。由于某种原因,当我不久前尝试时,v4 没有从 machine.config 读取它。

关于asp.net - IIS7集成管道: Interaction between maxConcurrentRequestsPerCPU and requestsQueueLimit settings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4737612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com