【问题标题】:RabbitMQ as Message Broker used by Spring Websocket dies under load作为 Spring Websocket 使用的消息代理的 RabbitMQ 在负载下死亡
【发布时间】:2018-05-28 09:05:34
【问题描述】:

我开发了一个应用程序,我们需要处理通过websocket 连接连接到后端的 160k 并发用户。

我们决定使用spring websocket 实现和RabbitMQ 作为消息代理。

在我们的应用程序中,每个用户都需要订阅其用户队列 @9​​87654327@ 以及其他用户也可以订阅 /topic/someUniqueName 的另一个队列。

在我们的第一个性能测试中,我们采用了一种简单的方法,即每个用户订阅两个新队列。

在运行测试时,RabbitMQ 在大约 800 个用户同时连接时静默死亡,因此大约有 1600 个队列处于活动状态 (See the graph of all RabbitMQ objects here)。

我读到了you should be careful opening many connections to RabbitMQ

现在我想知道approach that is anticipated by Spring Websocket with opening one queue per user 是否是高负载系统的概念问题,或者我的系统是否存在其他错误。

【问题讨论】:

  • 纯粹出于好奇:您是否尝试过使用 Kafka 而不是 RabbitMQ 进行设置?

标签: rabbitmq spring-websocket


【解决方案1】:

RabbitMQ 的限制因素通常是:

【讨论】:

    【解决方案2】:

    我确实找到了问题。我实际上错误地配置了 RabbitMQ 服务,只是给它一个 1024 文件描述符限制。增加它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      • 2015-04-22
      • 1970-01-01
      • 2021-06-23
      • 2018-10-09
      • 2014-11-08
      相关资源
      最近更新 更多