The latest version of HornetQ as part of JBoss EAP 5.1.2 has once again been
benchmarked against SPECjms2007 (c).
HornetQ is also included on JBoss AS7, which contains the same improvements we have made to achieve this performance. You will also be able to get the same performance figures with JBoss AS7.
This latest benchmark has outperformed HornetQ's latest publication by a good margin
already.
With this latest result HornetQ sustained a load of about 8 million messages per
second.
SpecJMS is a peer reviewed benchmark and is the first industry standard and has strict
rules as to how each messaging system is configured. This is to make sure that vendors
don't cheat when it comes to persistence and transactional requirements etc. SPEC is an independent corporation comprised of
representatives from commercial and academic organisations. The corporation creates many
industry standard benchmarks for Java amongst others. The
benchmark simulates how a Message System would be used in a real world scenario.
The
software supports three topologies, Horizontal, Vertical and Freeform. Only Horizontal
and Vertical can be used for publishing a result. Freeform can be useful to create a
custom workload to test the Messaging System for a given usecase.
Horizontal Topology is where the benchmark scales the number of Topic Subscriptions
and Queues whereas a Vertical topology has a fixed number of queues but sends varying
volumes of messages depending on the scale.
* The Horizontal results can be found here
* and the Vertical results here.
The scale is configured by setting the BASE configuration property value. At first
glance the results can look quite confusing but here is a breakdown of the
results:
- What this means in terms of actual performance:
HornetQ sustained a load of about 6 million messages on the vertical topology this can
be seen by looking at the following graph
Horizontally HornetQ achieved about 8 million messages per second which is shown on the runtime graph.
The runtime graph is used to show the following:
- The expected versus actual message rates. These provide a quickly check the benchmark driver created enough load for the configured scale.
- The message sent/received spread. You can expect this because topics are used in the benchmark and many clients will receive a single sent message.
- In the Horizontal topology the spread will be greater than Vertical. Horizontal topology by it's nature has a greater distribution of messaging clients.
The system configuration diagram shows the hardware installation used for this result and necessary to
get similar levels of performance.
The server was a 2 chip 4 core CPU with 24576 MB of memory and a 1 GbE network
interface. The client's, of which there were 4, were 1 chip 4 core CPU with 22528 MB of
memory and also a 1 GbE network interface. The HornetQ journal is persisted using a
networked mass storage array available to the messaging server.
A few options were set on the JVM which were as follows:
- -XX:+UseLargePages - this enables large pages
- -XX:LargePageSizeInBytes - set the large page size
- -Xms and -Xmx - setting these both to 3800m stops any memory resizing delays
The following changes were made to the HornetQ Server configuration which were as
follows
- configuration.journal-min-files - this was set to a large number of files
- configuration.thread-pool-max-size - increased level of concurrency
For more detailed information about the benchmark see the DesignDocument
provided by SPEC. Additionally there is an academic paper detailing the workload characterization in greater detail.