We have been doing performance testing on RabbitMQ primarily focused on MQTT protocol. Our use case is to support MQTT publishers with QoS 1 using two way TLS and need to target throughput rate of more than 50K msgs/sec. However, our performance tests yielded us not so encouraging throughput numbers. Below given is our test setup and results that we got:
Setup
14 node RabbitMQ (version 3.5.7) cluster on AWS
Instance type of RabbitMQ node: m4.xlarge
Persistent disk attached to node: 8GB general purpose SSD
AWS ELB configured to load balance between all 14 RabbitMQ nodes.
Test
Tests were performed for both MQTT and AMQP protocols. Following two scenarios were tested:
In each case there was only one subscriber per topic and multiple publishers. Also, the qos for MQTT for both publisher and subscriber was set to 1. For AMQP, acknowledgements were enabled for both publishers and subscribers (with durable queues for subscribers) to simulate qos 1 behavior of MQTT.
Both publishers and subscribers were Java clients using paho client library for MQTT and rabbitmq amqp java library for AMQP.
Both publishers and subscribers were using two-way TLS (client cert based auth).
Results
We are seeing a major decrease in performance (throughput) of RabbitMQ when we switch to using MQTT.
Questions:
Regards,
Atul Kshirsagar
- Are there any configuration changes that we can do to get better performance from MQTT plugin of Rabbit?
- Is there anything wrong with our setup/tests?
Regards,
Atul Kshirsagar
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitmq-user...@googlegroups.com.
To post to this group, send email to rabbitm...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
| channel.queueDeclare("AMQPSubscriber-"+bindingKey.replace(".", "-"), true, false, cleanSession, null).getQueue(); | |