Chapter 43. Performance Tuning
In this chapter we will discuss how to tune HornetQ for optimum performance.
43.1. Tuning Persistence
- Put the message journal on its own physical volume. For example, if the disk is shared with a transaction coordinator, database, or other journals which are also reading and writing from the disk, these may greatly reduce performance because the disk head may be skipping between the different files. One advantage of an append only journal is that disk head movement is minimized - this advantage is destroyed if the disk is shared. If using paging or large messages, ideally, ensure that they are put on separate volumes.
- Minimum number of journal files. Set
journal-min-files
to a number of files that would fit the average sustainable rate. For example, if new files are being created on the journal data directory too often and lots of data is being persisted, increase the minimum number of files, this way the journal would reuse more files instead of creating new data files. - Journal file size. The journal file size should be aligned to the capacity of a cylinder on the disk. The default value 10MiB should be enough on most systems.
- Use AIO journal. If using Linux, try to keep the journal type as AIO. AIO will scale better than Java NIO.
- Tune
journal-buffer-timeout
. The timeout can be increased to increase throughput at the expense of latency. - If running AIO, it may be possible to increase performance by increasing
journal-max-io
. DO NOT change this parameter if running NIO.