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

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

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

【问题讨论】:

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

标签: rabbitmq message-queue amqp


【解决方案1】:

这篇文章可以帮助你:

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

  1. RabbitMQ 中允许的最大队列数?

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

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

【讨论】:

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

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

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多