使用JETTY 12 HTTP2ServerConnectionFactory具有高MAXCONCURRENTSTREAMS

问题描述 投票:0回答:1
但是使用默认值128的方法太小,因为系统中可能具有100m的传感器。我想知道是否应该更改API以允许流中的多个传感器订阅,并引入退订/更改订阅机制,或者只是将MaxConcurrentsTreams增加到高价值。 thanks!

我想了解配置HTTP2ServerConnectionFactory :: MaxConcurrentsTreams到高价值(例如100K)时的后果是什么。默认值是128,有什么原因吗?

之所以选择128的值,是因为大多数浏览器和大多数其他服务器都在同一球场上使用一个值。

能够管理128个并发流似乎足以容纳当前网页,因此对于Web使用,它应该是一个很好的默认值。

对于非WEB使用,例如代理,服务器到服务器通信或非浏览器客户端服务器通信,也可以根据服务器硬件的不同。

在容器中以0.75 CPU内核运行的服务器上配置1000个并发流是没有意义的:d

jetty http2 embedded-jetty
1个回答
0
投票
主要原因是,您有大量的流式流动窗口的风险很大,以便使通信会严重减慢。 使用100K流,每个流只能发送167个字节来耗尽16 MIB的默认码头客户端会话控制窗口。
不,扩大窗户更多将导致更大的记忆压力,并可能导致其他问题级联。

每个传感器使用一个HTTP/2流显然受到限制。 发送一条消息向取消订阅(对于时间序列事件而言可能是一个更罕见的事件)似乎并不是太多的成本。

我建议您研究
cometd

(免责声明,我是项目负责人)。

它是一个基于码头的库,为网络消息提供了高度可扩展的代理。您的用例非常适合Cometd。

对于您的用例,您可以订阅每个传感器的通道(尽管您可以替代此方案,例如所有传感器的一个通道,以及每个消息中的传感器ID,或分组中的传感器,等等。 ),并接收该传感器的消息。 Cometd将负责基础协议实现详细信息(用于使用WebSocket或HTTP)。 在这样,您将专注于应用程序,而不是构建可扩展的基础架构;后者由Cometd提供。 请参阅广泛的Cometd文档以获取更多信息:

Https://docs.cometd.org/

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.