我是 RabbitMQ 的新手,正计划编写一些测试来了解 RabbitMQ 中的消息系统如何随着使用的交换数量进行扩展。我特别想知道增加 N 交换将如何影响 CPU、内存和 IO 使用。
我注意到 RabbitMQ 附带了一个 rabbitmqct1.bat 应用程序,它有一个状态命令,可以输出系统相关信息。我遇到的问题是决定在消息传递周期中何时运行基准测试实用程序。
我应该在向交易所发布消息时运行它吗?或者在我将队列绑定(bind)到交换器时运行它?或者当消息从交换器推送到队列时?
干杯。
最佳答案
您可能会发现 Web 管理插件是查看系统当前性能的最简单方法。再一次,看看Routing Topologies for Performance and Scalability with RabbitMQ我在您的另一个问题中链接到了它。
值得考虑测试中的变量:
- 你的信息会持久吗? (参见 delivery_mode = 2)这将增加您的磁盘 IO
- 您的消息有多大?这将对吞吐量产生很大的影响,如果它们很大(几 kb 那么你可能想看看压缩),在网络性能和内存方面(以及磁盘 IO,如果它们是持久的)
同样值得注意的是,当队列没有消费者时,队列性能会下降,因此如果它稳定增长,那么性能将会下降,理想情况下,RabbitMQ 队列将始终处于(或接近)0 条消息。
一些有用的链接:
关于java - RabbitMQ N 交换测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886428/