【问题标题】:IIS not handling WebApi requests asynchonouslyIIS 未异步处理 Web Api 请求
【发布时间】:2015-05-23 20:26:44
【问题描述】:

我在 ApiController 中定义了这个端点:

 public async Task<IHttpActionResult> GetAsync()
 {
     await Task.Delay(1000);
     return Ok("getasync");
 }

我正在运行 Apache Benchmark 来运行 50 个并发请求,如下所示:

ab -c50 -n50 http://localhost/api/hello/getasync

Requests completed in IIS:        5050ms
Requests completed in IISExpress: 1080ms  

似乎在 IIS 上这些请求不是异步处理的,而是只有 10 个线程同步处理请求。

我还通过 WebApi(使用 HttpClient)将 http 请求代理到在 1000 毫秒延迟后响应的 nodejs 端点来测试这一点。我看到类似的结果,代码似乎在 IISExpress 中异步运行,但在 IIS 中同步运行。

我还在 IIS 中禁用了会话状态,但这没有效果。

这两个测试都在 Windows 8.1 上运行。 IIS 版本为 8.5。

谁能指出为什么 IIS 不异步处理这些请求?

【问题讨论】:

    标签: c# asp.net iis asp.net-web-api


    【解决方案1】:

    只有 10 个线程

    确实,在 Windows IIS 的非服务器版本上,并发请求限制为 10 个。

    此外,您所做的一切都是正确的,如果您增加并发请求的数量,应该会看到几乎任意的吞吐量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多