代码之家  ›  专栏  ›  技术社区  ›  fguillen

使用http2如何限制并发请求的数量?

  •  0
  • fguillen  · 技术社区  · 5 年前

    我们有一个系统 client <-> server 正在研究http1.1。客户机正在向服务器发出数百(有时数千)个并发请求。

    由于浏览器对http1.1连接的默认限制,客户机实际上是以(6~8)个并发请求的批量发出这些请求,因此我们认为,如果能够增加并发请求的数量,我们可以获得一些性能改进。

    我们将系统移到http2上工作,我们看到客户机按我们的要求同时请求所有请求。

    现在的问题恰恰相反:服务器无法处理这么多并发请求。

    如何将客户端同时执行的并发请求数量限制为服务器更易于管理的数量? 假设50~100个并发请求。

    我们假设http2可以允许我们计算并发的 连接:

    使用http/2,客户机可以完全控制服务器推送的方式 使用。客户端可以限制并发推送流的数量; 调整初始流控制窗口以控制数据量 当流首次打开时推送;或禁用服务器推送 完全。这些首选项通过设置帧进行通信 在http/2连接的开头,可以在任何时候更新 时间。

    这里也是:

    o如果可能的话,我们可以在服务器端限制这一点(我认为更易于维护)。

    但看起来这些解决方案都在讨论 Server Push 我们得到的是客户在拉。

    以防我们的架构看起来像这样:

    Client ==[http 2]==> ALB(AWS Beanstalk)  ==[http 1.1]==> nginx  ==[http 1.0]==> Puma
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   AlexOwl    5 年前

    有特殊的背景 SETTINGS 框架

    您可以指定 SETTINGS_MAX_CONCURRENT_STREAMS 100 在服务器端

    Reference