我有一个使用异步/等待控制器和任务的Web api项目。
在第6个请求排队之后,我注意到了每个请求。为了测试这一点,我做了一个简单的延迟动作:
[HttpGet()]
[Route("maestros/prueba")]
public async Task<IHttpActionResult> prueba()
{
await Task.Delay(5000);
return await Task.FromResult(Ok(true));
}
然后我从AngularJS应用程序中调用了它。我单击了18次,结果如下所示:
我希望立即处理它们,即使它们对性能的影响不大,但我却面临着6个请求的处理块。
我尝试在控制器级别禁用会话,但它不起作用。我到处都在寻找信息,但这还不是结论,我真的不知道发生了什么。
对于这个项目,这是一个真正的问题,因为在某些部分发出6个请求的数量更多,并且一切都变慢了。
发生了什么事?我可以更改它吗?
答案 0 :(得分:1)
您看不到明显的东西。不是WebApi仅处理并发请求。这是您的浏览器没有发送更多信息。
Max parallel http connections in a browser?
基本上,Chrome每个域只会使用6个并发打开请求。想要更多-使用多个浏览器或多个域。
这与WebAPI(服务器端)完全无关,纯粹是您选择的浏览器强制执行的客户端限制。
答案 1 :(得分:0)
Bombardier是测试此问题的更好(便捷)工具。它可以激发服务器处理的尽可能多的请求。
我们所有的端点都是异步/等待状态,可以轻松地为您的浏览器提供6个以上的服务。