【问题标题】:How many requests can a Web API handle concurrently by defaultWeb API 默认可以同时处理多少个请求
【发布时间】:2019-01-29 10:07:49
【问题描述】:

我有一个用 c# .Net framework 4.6 开发的非常简单的 Web API。
整个应用程序中没有 async 调用。每个请求大约需要 30 秒才能完成。它进行一些计算并返回一个 JSON 字符串。这不涉及数据库。它只是从云端下载一个文件并计算一些值。

它托管在 Windows Server 2016 和 IIS 中。

我想知道 Web API 或 IIS 在给定时间点处理多少并发请求。

我知道不能像这样从 web.config 增加并发请求:

<configuration>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="50000"/>
    </connectionManagement>
  </system.net>
</configuration>

这里有一些我确信非常基本的问题。
1. Web API 是否具有默认处理并发请求的能力(无需在 web.config 或应用程序中的任何位置添加任何内容)。如果有,有多少?

  1. 默认情况下,IIS 是否具有处理并发请求的属性(使用 IIS 线程池)。如果有,有多少?

PS:假设此 API 使用的所有资源始终可用。

如果有人可以帮助我理解这一点并指导我找到正确的文章,那对我将非常有帮助。非常感谢!

【问题讨论】:

  • @iSahilSharma 感谢您的回复。但是这个答案是关于 Kestrel Web Server 和 .Net 核心应用程序的解释。我正在使用 .Net 框架。

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


【解决方案1】:

这取决于,IIS 可以根据 CPU 数量、最大线程数、安装的内存量以及生成响应所需的操作“难度”返回请求。

如果 IIS 在任何时候都无法处理请求,则该请求将排队。我认为排队请求的最大数量是 9000。达到该限制后,服务器返回 503 错误。

根据响应“权重”的硬件因素,它可能会从 100 个请求到 50000 个甚至更多。

考虑到您有足够的可用带宽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多