InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

HornetQ 2.0 faster than ActiveMQ 5.3 on Independent Benchmark but what about ActiveMQ 6?

Posted by Dionysios G. Synodinos on Feb 18, 2010

Sections
Operations & Infrastructure,
Enterprise Architecture,
Development,
Architecture & Design
Topics
Open Source ,
Messaging ,
Java
Tags
JMS ,
Benchmark ,
HornetQ ,
ActiveMQ

JBoss HornetQ  has proven faster in peer reviewed benchmark, than the current version of ActiveMQ, mainly because of its choice to implement a highly tuned journal that uses AIO when running on Linux. ActiveMQ seems to be going the same way for version 6, pushing the competition.

Back in October of 2009 ActiveMQ had its first SPECjms2007 benchmark result for version 5.3. The ActiveMQ team was very pleased about the results back then:

Needless to say, 5.3.0 does nicely in both horizontal (number of destinations) and vertical (load per destination) scalability. It is fitting to see Apache ActiveMQ being used in the world's first SPECjms2007 submission.

SPECjms2007 is a benchmark for evaluating the performance of enterprise message-oriented middleware servers based on JMS, which provides a standard workload and performance metric for competitive product comparisons, as well as a framework for in-depth performance analysis of enterprise messaging platforms. It measures the end-to-end performance of all components that make up the application environment, including hardware, JMS server software, JVM software, database software if used for message persistence, and the system network.

Since then JBoss HornetQ has participated in the benchmark which reported that it was much faster then it competition:

HornetQ- the new ultra high performance enterprise grade messaging system from JBoss, sets a record breaking score in the SPECjms2007 industry standard benchmark for JMS messaging system performance. HornetQ 2.0.GA obtained scores up to 307% higher than previously published SPECjms2007 benchmark results, on the same server hardware and operating system set-up. The peer-reviewed results are available on the spec.org web-site: www.spec.org/jms2007/results/jms2007.html

As InfoQ has reported in the past, HornetQ, which is basically a rebranding of JBoss Messaging, has an optional highly customized journal that uses Linux Asynchronous IO (AIO) via a native code layer for higher performance:

HornetQ provides message persistence using its own built-in, high performance journal. HornetQ has no dependency on clunky, slow, relational databases for persistence. The journal is a unique piece of technology that automatically detects if running on Linux and uses Linux Asynchronous IO (AIO) via a native code layer for astonishing performance. If AIO is not available seamlessly falls back to using Java NIO, so will run seamlessly on any Java platform.

This technique seems to provide much better performance than journals implemented in pure Java and as Rod Davies author of “ActiveMQ in Action” responds to JBoss Tim Fox, it is being implemented in the next version of ActiveMQ:

[…] we liked the idea of using direct I/O on linux systems so much we added it to ActiveMQ 6 a few months ago. We like healthy competition - keep up the good work!

It will be interesting to see the results that ActiveMQ gets after this improvement and compare them with the also improved version of HornetQ (v2.1), when both became available.

You can find more information about HornetQ, ActiveMQ and JMS right here on InfoQ!

Dionysios G. Synodinos is a Web Engineer and a freelance consultant, focusing on Web technologies

astonishing performance by Andreas Mueller Posted
Re: astonishing performance by Tim Fox Posted
Re: astonishing performance by Andreas Mueller Posted
Re: astonishing performance by Tim Fox Posted
  1. Back to top

    astonishing performance

    by Andreas Mueller

    I don't see this "astonishing performance" of HornetQ. I've tested it against SwiftMQ and it falls far behind. Even with their AIO log installed it is half the throughput with persistent messages as SwiftMQ with disk sync enabled.

  2. Back to top

    Re: astonishing performance

    by Tim Fox

    Andreas,

    As I said on the serverside article, we have tested HornetQ against SwiftMQ internally, and HornetQ scales with persistent messages to a level well beyond with SwiftMQ is capable of.

    We'll be backing this up soon with a set of systematic benchmarks performed in as rigorous a way as possible. You'll also be able to repeat them yourself to verify the results.

  3. Back to top

    Re: astonishing performance

    by Andreas Mueller

    No problem if this is verifiable and conforms with our license. You should also check your non-transacted/persistent send behavior. Seems you send async here which is not JMS conform.

  4. Back to top

    Re: astonishing performance

    by Tim Fox

    HornetQ by default sends non transacted persistent messages "blocking", i.e. we wait for a response from the server before sending the next one, in order to conform to strict JMS semantics out of the box.

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.