【问题标题】:WebAPI Lifecycle/Request QueueWebAPI 生命周期/请求队列
【发布时间】:2015-02-19 10:13:29
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net asp.net-web-api performance-monitor


    【解决方案1】:

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

    对于 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(框架)是没有限制的,它实际上取决于它周围的基础设施,它有限制,以确定什么是可能的。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多