Home > Blogs > VMware vFabric Blog


How fast is a Rabbit? Basic RabbitMQ Performance Benchmarks

One of the greatest things about RabbitMQ is the community that surrounds it. With open source at its roots, people come together to share their code, their knowledge and their stories of how they’ve deployed it in their projects. At a recent meetup near Nice, France, database engineer Adina Mihailescu shared a presentation on choosing messaging systems. Supported by Murial Salvan’s benchmark comparing ActiveMQ, RabbitMQ, HornetQ, Apollo, QPID, and ZeroMQ, they shared some interesting performance comparisons that we’d like to share with you.

In a single laptop benchmark, Salvan ran four different scenarios in order to obtain some insight on performance of the default setups for these messaging solutions. Each test had 1 process dedicated to enqueuing and another dedicated to dequeuing. The message volume and size ranged from 200 to 20,000 to 200,000 messages and 32 to 1024 to 32768 bytes. Both persistent and transient queues and messages were used.

The main points are below, however you can also check out Salvan’s blog post to see the source code, charts, and a data sheet.  Here were the highlighted results:

  • Brokers perform much better with fewer, bigger messages.
  • Persistence drawbacks appear with big messages, and time on small/medium messages is spent on processing not I/O.
  • ZeroMQ’s simple feature-set delivers great performance.
  • QPID seems to perform the best when persistence is not used.
  • AMQP seems more optimized than STOMP.
  • RabbitMQ seems to outperform others by a factor of 3 except for the case of big messages.

Adina’s related presentation is titled, “Messaging Systems—How to make the right choice?” In it, she covers the following:

  • What are messaging systems?
  • How messaging helps with performance, complexity, scalability, quality, cost-effectiveness, high-availability, and messaging patterns
  • Comparison of the Java Message Service API, AMQP, and STOMP with code examples
  • Trade-offs
  • Functional and operational requirements
  • The benchmark results

In one slide, Adina highlights the benefits of message oriented middleware in the cloud, a SaaS model, and explains how overhead is reduced and scale is introduced with greater simplicity and lower cost when messaging takes place in the cloud. Her examples include Amazon Simple Queue ServiceCloudAMQP, and StormMQ. To add commentary to this slide, we’d like to also point out that RabbitMQ is available in the cloud via Cloud Foundry and Pivotal along with MongoDB, Redis, and there is also support for Scala and the Play Framework. With RabbitMQ and Cloud Foundry, there are some pretty cool things worth pointing out:

More About RabbitMQ Performance

Less than a year ago, we began publishing some information about RabbitMQ’s performance and will summarize it here and begin to build a collection of RabbitMQ performance information.

In part one, we measured performance on a single PowerEdge R610 with dual Xeon E5530s and 40GB of RAM, RabbitMQ 2.8.1 and Erlang R15B with HiPE compilation enabled and the code is available. We showed the difference in send rate, receive rate, and average latency improvements between RabbitMQ 2.7.1 and 2.8.1 due to a capability called internal flow control and significant memory improvements.

In part 2, we outlined how different features affect performance using smaller messages. For a baseline, we showed auto-ack of 44,824 messages per second with one producer and one consumer. Looking at aspects of performance independently, we can publish at 53,710 messages per second with no consumption and consume 64,315 messages per second stand-alone. We shared performance number differences from configuring the mandatory flag and immediate flag impact rates as well as acknowledgements, publish confirms, and message persistence. The diagram below explains how message send rate and bytes rate change with message size—message rates drop with size increases, but the number of bytes sent increases. You can read more about message size and horizontal scale prefetch counts in this portion of the post.

In the article, we go on to publish information for scenarios with large queues and paging—we load and drain 500,000 messages, 10,000,000 messages to show where the bottlenecks occur. There are also other in-depth performance resources on the RabbitMQ blog and you can read over 45 case studies, tutorials, and updates on RabbitMQ at the vFabric Blog.

Of course, in the spirit of community, if you’ve run across any great performance articles on messaging and RabbitMQ, we would love to hear from you and share your stories on this blog.  To let us know, leave a comment below and we will contact you.

For more information on RabbitMQ:

This entry was posted in Cloud Foundry, RabbitMQ and tagged , , , on by .
Adam Bloom

About Adam Bloom

Adam Bloom has worked for 15+ years in the tech industry and has been a key contributor to the VMware vFabric Blog for the past year. He first started working on cloud-based apps in 1998 when he led the development and launch of WebMD 1.0’s B2C and B2B apps. He then spent several years in product marketing for a J2EE-based PaaS/SaaS start-up. Afterwards, he worked for Siebel as a consultant on large CRM engagements, then launched their online community and ran marketing operations. At Oracle, he led the worldwide implementation of Siebel CRM before spending some time at a Youtube competitor in Silicon Valley and working as a product marketer for Unica's SaaS-based marketing automation suite. He graduated from Georgia Tech with high honors and an undergraduate thesis in human computer interaction.

10 thoughts on “How fast is a Rabbit? Basic RabbitMQ Performance Benchmarks

  1. Shane Jaducana

    We’re using RabbitMQ with Grails, and we’re only getting a receive rate of approximately 600 messages per minute and a publish rate of approximately 1200 messages per minute.

    Where could the problem be? Why are we experiencing very slow rates?

    Thanks.

    Reply
    1. Chok

      I am assuming that all these benchmarks are done on a single machine? And for your real world usage, you are publishing from one machine to another machine? I am not sure but I am not taking in any numbers here unless they publish from one machine to a different machine, over maybe at least one or two routers. Also need the CPU speed, number of CPU cores, and number of threads used for the benchmarks.

      Reply
  2. more..

    Also readDementia and cognitive Alzheimer’s Disease Part Three: Alzheimer’s DiseaseRudy HatfieldIn the same way as long chain fats.
    Getting the proper nutrition for a patient with cognitive Alzheimer’s.
    They’re frustrated within their new limitations, the same as Alzheimers disease.
    This is particularly true in those who have severe dementia.

    Reply
  3. Vanita

    Due to the great wood venetian blinds outdoors! If you plan to install the
    new conservatory that we had just had built. And again,
    thank you for wood venetian blinds your support. It will also help
    make sleeping earlier for them to sleep during the day and
    night the conservatory can be a beacon for noisy neighbours and
    passersby.

    Reply
  4. get now

    Many vertical blinds add a tremendous amount of style to your home.
    This section will go to highlight the decorative powers of conservatory blinds is important.
    To make your shopping experience more pleasant some online stores.

    Isn’t kitchen blinds it a secure and simpler step to regulate your
    expenditure?

    Reply
  5. Sabeer

    Great article, but a general suggestion: perhaps introduce something like captcha for commenting on the blog? It appears you’re being spammed…

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>