【发布时间】:2011-12-16 19:19:20
【问题描述】:
我的应用程序需要高性能消息总线,因此我正在评估ZeroMQ、RabbitMQ 和Apache Qpid 的性能。为了测量性能,我正在运行一个测试程序,该程序使用其中一个消息队列实现发布 10,000 条消息,并在同一台机器上运行另一个进程来使用这 10,000 条消息。然后我记录发布的第一条消息和收到的最后一条消息之间的时间差。
以下是我用于比较的设置。
-
RabbitMQ:我使用了“扇出”类型的交换和默认配置的队列。我使用了 RabbitMQ C 客户端库。 -
ZeroMQ:我的发布者使用ZMQ_PUSH套接字发布到tcp://localhost:port1,我的代理监听tcp://localhost:port1并将消息重新发送到tcp://localhost:port2,我的消费者使用ZMQ_PULL套接字监听tcp://localhost:port2。我在ZeroMQ中使用代理而不是点对点通信,以使性能比较与使用代理的其他消息队列实现公平。 -
QpidC++ 消息代理:我使用了“扇出”类型的交换和默认配置的队列。我使用了 Qpid C++ 客户端库。
以下是性能结果:
-
RabbitMQ:接收10000条消息大约需要1秒。 -
ZeroMQ:接收 10000 条消息大约需要 15 毫秒。 -
Qpid:接收10000条消息大约需要4秒。
问题:
- 有没有人在消息队列之间进行过类似的性能比较?然后,我想将我的结果与您的结果进行比较。
- 有什么方法可以调整
RabbitMQ或Qpid以使其性能更好?
注意:
测试是在分配了两个处理器的虚拟机上完成的。不同硬件的结果可能会有所不同,但我主要对 MQ 产品的相对性能感兴趣。
【问题讨论】:
-
几个月前我进行了简单的测试,结果相似。我注意到系统在使用 RabbitMQ 或 Qpid 时非常空闲。我觉得一定有什么地方不对劲。
-
"RabbitMQ:接收 10,000 条消息大约需要 12 秒。" -- 在我们自己的测试中,我们经常看到每个 CPU 每秒 20-25,000 个入口。因此,您做错了什么,或者使用了慢速客户端。您是否尝试通过电子邮件向 rabbitmq-discuss 发送问题?
-
这是一个很好的比较,日期为 2013 年 4 月 10 日:x-aeon.com/wp/2013/04/10/…
-
RabbitMQ、Kafka、HornetQ、ActiveMQ、SQS 和 Mongo 性能比较的更新版本现在在这里:softwaremill.com/mqperf
-
你做这个测试时每条消息是多少字节?
标签: message-queue rabbitmq zeromq qpid