RabbitMQ - RabbitMQ 可以在单个服务器上处理多少个队列?

Posted

技术标签:

【中文标题】RabbitMQ - RabbitMQ 可以在单个服务器上处理多少个队列?【英文标题】:RabbitMQ - How many queues can RabbitMQ handle on a single server? 【发布时间】:2014-05-24 06:22:36 【问题描述】:

RabbitMQ 在单台服务器上最多可以处理多少个队列?

它是否依赖于 RAM?是否依赖于 erlang 进程?

【问题讨论】:

RabbitMQ Server 能处理1000万个队列吗?我的服务器需要多少内存? @N.B. - 不,它与硬件无关:),它是关于处理关于 RabbitMQ 的请求 我同意我应该考虑硬件,但硬件工程师无法回答这个问题:) ..这个问题需要了解 rabbitMQ 服务器、消息队列协议以及最后但并非最不重要的内存百分比rabbitMQ 占用(我认为它占总 RAM 的 40%) 当然,像你这样的人可以给这篇文章-1,但我不是我的,明白这个问题的人肯定会回答:) 【参考方案1】:

这篇文章可以帮助你:

http://rabbitmq.1065348.n5.nabble.com/Max-messages-allowed-in-a-queue-in-RabbitMQ-tp26063p26066.html

    RabbitMQ 中允许的最大队列数?

几千(甚至几万)个队列应该没问题 完全没有,尽管每个对象(例如,队列、交换、绑定等) 会占用一些内存和/或磁盘空间。默认情况下,Erlang 将 强制执行最大数量的并发进程(即轻量级 线程)在 32768 IIRC 左右。每个队列都由自己管理 过程和每个连接都可能导致更多,所以如果你 计划在单个中拥有大量活动队列 节点(?)并同时使用它们,那么您可能需要 调整模拟器参数 rabbit 通过设置 +P 到更高的限制。

您也可能会用掉很多 Gb,只是每个 Gb 的开销 队列/连接非常快,所以你需要一个非常多肉的 服务器来处理数以百万计的两者。几万应该没有 完全没有问题,只要它们适合 RAM。

【讨论】:

好帖子。基本上我想要Ex的技术答案。 1Gb RAM 可以处理这么多的请求 ..like this - 这样我就可以决定是否应该增加 RAM 正如您在帖子中看到的:“因此,如果您计划在单个节点 (?) 中拥有大量活动队列并同时使用它们,那么您可能需要调整模拟器参数 rabbit 通过将 +P 设置为更高的限制来传递虚拟机。“所以你必须创建一个真实的模拟,因为数字取决于活动..连接..然后你可以.【参考方案2】:

RabbitMQ 代理内部没有任何硬编码限制。代理将利用所有可用资源(除非您对其中一些资源设置限制,否则它们在 RabbitMQ 术语中称为 水印)。

Erlang 本身有一些限制,比如最大并发进程数,但如果理论上你可以在单个节点上达到它们,那么使用distributed features 总是个好主意。

关于RabbitMQ资源使用和限制的讨论很多,

How many queues can one broker support 在 RabbitMQ 邮件列表中 Max messages allowed in a queue in RabbitMQ? 在 RabbitMQ 邮件列表中 Rabbitmq - Reasonable performance/scale expectations服务器故障 Is there a limit to the number of exchanges for rabbitmq? 堆栈溢出

附:虽然有 AMQP 协议限制。它们在4.9 Limitations 部分中进行了描述

AMQP 规范对未来的扩展施加了这些限制 AMQP 或相同线级格式的协议:

每个连接的通道数:16 位通道数。 协议类数:16 位类 ID。 每个协议类的方法数:16 位方法 ID。

AMQP 规范对数据施加了这些限制:

短字符串的最大长度:255 个八位字节。 长字符串或字段表的最大大小:32 位大小。 帧有效负载的最大大小:32 位大小。 内容的最大大小:64 位大小。

服务器或客户端也可以对资源施加自己的限制,例如 作为同时连接的数量,每个消费者的数量 通道、队列数量等。这些不影响互操作性 并且没有指定。

【讨论】:

以上是关于RabbitMQ - RabbitMQ 可以在单个服务器上处理多少个队列?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过相关 ID 将 RabbitMq 消息聚合为单个消息

Rabbitmq 使用 .NET 使用单个同步调用检索多条消息

一个通道 - RabbitMQ 中的一个队列?

如何配置RabbitMQ服务器集群有哪些好处?

RabbitMQ消息队列笔记

RabbitMQ消息队列笔记