3

我有一个调用 WebAPI 的 AngularJS 应用程序。如果我记录我发起请求的时间(在我的角度控制器中)并记录 OnActionExecuting 运行的时间(在我的 WebAPI 控制器中的操作过滤器中),我有时会注意到大约 2 秒的间隙。我假设在此过滤器之前没有其他任何运行,这是由于请求被阻止/排队。我假设这是因为如果我删除所有其他数据调用,我看不到这个差距。

WebAPI 一次可以处理的并行请求数是多少?我尝试查看 ASP.NET 性能监视器,但找不到可以查看此数据的位置。有人可以对此有所了解吗?

4

1 回答 1

0

对此没有直接的答案,但最短的答案是......

WebApi 对此没有限制,限制来自您的服务器可以处理的内容以及您运行的代码的效率。

...但是既然你问了,让我们考虑一些我们可以假设的关于我们的服务器和我们的应用程序的基本事情......

  1. 并发连接

典型的服务器以“c10k”之类的问题而闻名... https://en.wikipedia.org/wiki/C10k_problem ...因此对并发连接的数量施加了硬性限制。

假设每个 WebApi 调用都是从网页上的一些 AJAX 调用发出的,这给了我们大约 10k 连接的限制,然后事情变得邪恶。

2.依赖相关的开销

如果我们再考虑相关代码的复杂性,您可能会在执行 SQL 查询之类的事情时遇到瓶颈,我经常编写具有运行 10+ db 查询的业务逻辑的 WebApi 控制器,这里的开销可能是您的问题?

  1. 馈入开销

服务器的网络带宽如何?假设我们为每个呼叫传输 1MB 的数据,用这种大小的消息阻塞 1Gb/s 以太网线路不会花费很长时间。

  1. 处理开销

假设您编写了一个执行复杂计算的 Api(例如,为复杂的 3D 数据生成网格),您很容易在每次请求时阻塞您的 CPU 一段时间。

  1. 超时

假设服务器可以接受您的请求并且请求是异步发出的,那么最大的问题是,您准备等待多长时间?假设这很短,您将减少在每个请求需要响应之前有时间解决的问题数量。

...

如您所见,这绝不是一份详尽的清单,但它概述了您提出的问题的复杂性。也就是说,我认为 WebApi(框架)没有限制,它实际上取决于它周围的基础设施,它有限制,以确定什么是可能的。

于 2016-01-07T16:18:30.360 回答