0
votes

I'm fairly new to RabbitMQ and am planning on writing a few tests to understand how the message system in RabbitMQ scales with the number of exchanges used. In particular I'm curious to see how increasing N exchanges will affect the CPU, Memory and IO usage.

I've noticed that RabbitMQ ships with a rabbitmqct1.bat application which has a status command that'll output system related information. The issue I'm having is deciding when in the messaging cycle to run the benchmarking utility.

Should i be running it as I'm publishing messages to the exchanges? Or running it as I bind queues to the exchange(s)? Or as messages get pushed from the exchanges to the queues?

Cheers.

1

1 Answers

1
votes

You will probably find the web management plugin the easiest way to view the current performance of your system. Once again, take a look at Routing Topologies for Performance and Scalability with RabbitMQ which I linked to in another one of your questions.

It's worth thinking about the variables in your testing:

  • are your messages going to be persistent? (see delivery_mode = 2) this will increase your disk IO
  • how big are your messages? this will make a big difference to throughput, if they are large (a few kb's then you might want to look at compression), in terms of network performance but also memory (and disk IO if they are persistent)

It's also worth noting that queue performance drops when there are no consumers of the queue, so if it is steadily growing then performance will drop off, a RabbitMQ queue will ideally always be at (or near) 0 messages.

A few helpful links:

RabbitMQ Performance Measurements, part 1

RabbitMQ Performance Measurements, part 2