我们有一个系统client <-> server
在HTTP1.1上工作。客户端向服务器发出数百(有时是数千)并发请求。
由于浏览器对HTTP1.1连接的默认限制,客户端实际上是在批量(6~8)个并发请求中发出这些请求,我们认为如果我们可以增加并发请求的数量,我们可以获得一些性能提升。
我们将系统移至HTTP2上工作,我们看到客户端根据需要同时请求所有请求。
现在问题恰恰相反:服务器无法处理这么多并发请求。
我们如何限制客户端同时执行的服务器可管理的并发请求数量?让我们说50~100个并发请求。
我们假设HTTP2可以允许我们研究并发连接的数量:
使用HTTP / 2,客户端仍可完全控制服务器推送的使用方式。客户端可以限制并发推送流的数量;调整初始流控制窗口以控制首次打开流时推送的数据量;或完全禁用服务器推送。这些首选项在HTTP / 2连接开始时通过SETTINGS帧进行通信,并且可以随时更新。
也在这里:
哦,如果可能的话,我们可以在服务器端限制这个(我认为更易于维护)。
但看起来这些解决方案正在谈论Server Push,我们所拥有的是客户端拉动。
如果以任何方式提供帮助,我们的架构如下所示:
Client ==[http 2]==> ALB(AWS Beanstalk) ==[http 1.1]==> nginx ==[http 1.0]==> Puma