IIS没有异步处理WebApi请求

时间:2015-05-23 20:26:44

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

我在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请求代理到nodejs端点来测试这一点,该端点在1000ms延迟后响应。我看到类似的结果,代码似乎在IISExpress中运行异步但在IIS中同步运行。

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

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

有人能指出为什么IIS不会异步处理这些请求吗?

1 个答案:

答案 0 :(得分:3)

  

只有10个帖子

实际上,在Windows的非服务器版本上,IIS仅限于10个并发请求。

除此之外,你已经做好了一切,如果你增加并发请求的数量,应该看到几乎任意的吞吐量。