加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 是否并行执行所有Web请求并异步处理?

发布时间:2020-12-15 08:45:00 所属栏目:百科 来源:网络整理
导读:我正在使用由IIS托管的WebApi服务控制器, 我试图了解这个架构是如何工作的: 当WebPage客户端同时发送异步请求时,所有这些请求是否都在WebApi控制器上并行执行? 在IIS应用程序池中,我注意到队列大小设置为1,000默认值 – 这是否意味着1,000个最大线程可以同
我正在使用由IIS托管的WebApi服务控制器,
我试图了解这个架构是如何工作的:

>当WebPage客户端同时发送异步请求时,所有这些请求是否都在WebApi控制器上并行执行?
>在IIS应用程序池中,我注意到队列大小设置为1,000默认值 – 这是否意味着1,000个最大线程可以同时在WebApi服务器上并行工作?
或者这个值只与IIS队列有关?
>我已经读过IIS维护某种线程队列,这个队列是异步发送它的工作吗?或者IIS发送给WebApi服务的所有客户端请求是否同步发送?

解决方法

您正在查看的队列大小指定将为每个应用程序池排队的最大请求数(通常映射到一个w3wp工作进程).一旦超过队列长度,将返回503“Server Too Busy”错误.

在每个工作进程中,可以/将运行多个线程.每个请求都在工作进程内的一个线程上运行(默认情况下,每个进程默认最多250个线程).

因此,基本上,每个请求都在其自己的线程上处理(并发 – 至少,与线程一样同时),但特定应用程序池的所有线程(通常)由单个进程管理.这意味着,就请求本身而言,请求实际上是异步执行的.

回应你的评论;如果您启用了会话(您可能会这样做),那么ASP.NET将对请求进行排队,以便为每个请求保持对会话的锁定.尝试在Chrome中点击您的睡眠操作,然后在Firefox中快速响应操作,看看会发生什么.您应该看到两个不同的会话允许您的请求同时执行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读