Thomas Marquardt的following篇文章描述了IIS如何处理ASP.Net请求、可配置为运行的最大/最小CLR工作线程/托管IO线程、涉及的各种请求队列及其默认大小.

现在,根据本文,IIS 6.0中发生了以下情况:

  1. ASP.NET接收来自IIS IO线程的请求,并将"HSE_STATUS_PENDING"发布到IIS IO线程
  2. 请求被移交给CLR工作线程
  3. 如果请求的延迟很高,并且所有线程都被占用(线程数接近httpRuntime.minFreeThreads),那么请求将被发布到应用程序级请求队列(该队列针对每个AppDomain)
  4. ASP.NET还判断并发执行的请求数.本文声明"如果并发执行的请求数太高",它会将传入请求排队到ASP.NET全局请求队列(这是针对每个工作进程)(请判断更新2)

我想知道ASP.NET认为当前执行它的请求数太高,然后开始将请求排队到全局ASP.NET请求队列的"阈值"是多少?

我认为此阈值将取决于最大工作线程数的配置,但可能会有一些公式,ASP.NET将根据该公式确定并发执行的请求数太高,并开始将请求排队到ASP.NET全局请求队列.这个公式会是什么呢?或者此设置是可配置的吗?


Update
I read through the article again and in the comments sections I found this:

1)在IIS 6和IIS 7classic 模式下,每个应用程序(AppDomain) 有一个队列,它使用该队列来维护Worker的可用性 螺纹.此队列中的请求数在以下情况下会增加 可用工作线程的百分比低于由 httpRuntime minFreeThread.当由指定的限制 超过httpRuntime appRequestQueueLimit,则请求为 拒绝,状态代码为503,并且客户端收到 HttpException异常,并显示消息"Server Too Busy".还有一个 ASP.NET性能计数器"应用程序队列中的请求",该计数器 指示队列中有多少个请求.是的,CLR线程 池是由.NET ThreadPool类公开的池.

2) requestQueueLimit的名称很差.它实际上限制了


Update 2

推荐答案

This article可能有助于更好地理解设置.

minFreeThreads:如果工作进程中的可用线程数

Edit:

在这SO post篇文章中,Thomas提供了集成管道中请求处理的更多细节和示例.请务必阅读答案上的注释,以获得更多解释.

本机回调(在webengine.dll中)在CLR worker上拾取请求

Asp.net相关问答推荐

cookie 存储在系统的什么位置?

如何防止 Azure 网站进入Hibernate 状态?

返回 JSON 对象 (ASP.NET WebAPI)

asp.net mvc 中的 RedirectToAction 用法

在asp.net mvc c#中使用cookie

从 RowDataBound 事件的 gridview 从单元格中获取值

'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册.

使用 Visual Studio 2012 恢复删除的文件

ASP.net 与 PHP( Select 什么)

更改后未应用 CSS

如何在 ASP.NET MVC 中启用跨源请求

将新行添加到数据表的顶部

由 UpdatePanel 内 GridView 内的 LinkBut​​ton 触发的完整回发

Fiddler 没有从 ASP.NET 网站嗅探 SOAP 流量

如何在 GridView 中隐藏 TemplateField 列

Request.Cookies 和 Response.Cookies 之间的区别

如何告诉 RadioButtonList 不生成表格

ConfigurationManager.AppSettings 缓存

MVC4 中 Global.asax.cs 页面中的问题

在 ASP.NET 中写入文件以响应后回发不起作用