RabbitMQ集群

时间:2015-03-17 09:53:28

标签: rabbitmq

我在单台Windows机器上创建了RabbitMQ集群,并且对所有人都创建了HA策略,并创建了两个DISC和两个RAM节点以及1个STAT节点。然后我运行了PerfTest(rabbitmq客户端测试实用程序),结果令人失望,大约是5000米/秒。但是当我用单个RabbitMQ节点运行相同的测试时,它给了我很好的结果,即25000米/秒。我无法得到正在发生的错误,如果在集群内运行,其结果应该是令人印象深刻的,但它是相反的。任何人都遇到过相同或者知道其背后的原因。 感谢

5 个答案:

答案 0 :(得分:4)

具有镜像队列的RabbitMQ群集不会比单个节点更快。为什么?集群可以提高可靠性和容错性,而不是提高吞吐量。

这是什么原因?当您启用镜像队列时,RabbitMQ需要协调节点之间的状态,也就是说,它需要协调发布,消费者和确认,不要多次传递相同的消息,或者多个消费者。所有这些协调都会影响性能,但这是对这种复制的权衡。

如果您需要分散式复制,那么您可以使用Federation Plugin

答案 1 :(得分:0)

吞吐率取决于几个因素。在我们对集群中RabbitMQ的性能测试中,我们观察到速率根据RabbitMQ节点而变化,这些节点是DISC或RAM,但是当运行具有镜像队列的RabbitMQ集群时没有观察到大部分性能变化。启用镜像后,我们看到的速度为3500米/秒,而没有它是5000米/秒。还有什么是运行perftest时的邮件大小。

答案 2 :(得分:0)

与RabbitMQ一样,它实际上取决于。以下是我通过RabbitMQ群集提高性能的几种方法:

  • 仅使用负载均衡器
  • 将消息推送到一组大小适当的内存节点
  • 保持邮件大小非常小
  • 请勿使用amqp交易或发布商确认
  • 仅将HA镜像队列用于您必须保存数据的一小组队列
  • 使用策略
  • 在所有邮件或队列上设置TTL

答案 3 :(得分:0)

答案 4 :(得分:0)

问题是您在具有相同资源的同一台计算机上运行群集。 兔群的目的是向外扩展而不是扩展。 换句话说,要有更多的网络连接可用,更多的磁盘功率当然更多的CPU能力来处理更多的消息。 在单台计算机上添加节点时,您不会扩展资源,而是增加使用群集的开销。 (如上所述)