Chapter 35. Tuning Persistence

  • Put the message journal on its own physical volume.

    One of the advantages of an append-only journal is that disk head movement is minimized. This advantage is lost if the disk is shared. When multiple processes, such as a transaction coordinator, databases, and other journals, read and write from the same disk, performance is impacted because the disk head must skip around between different files. If you are using paging or large messages, make sure they are also put on separate volumes.

  • Tune the journal-min-files value.

    Set the journal-min-files parameter to the number of files that fits your average sustainable rate. If you frequently see new files being created on the journal data directory, meaning a lot data is being persisted, you need to increase the minimal number of files. This allows the journal to reuse, rather than create, new data files.

  • Optimize the journal file size.

    The journal file size must be aligned to the capacity of a cylinder on the disk. The default value of 10MB should be enough on most systems.

  • Use the AIO journal type.

    For Linux operating systems, keep your journal type as AIO. AIO scales better than Java NIO.

  • Tune the journal-buffer-timeout value.

    Increasing the journal-buffer-timeout value results in increased throughput at the expense of latency.

  • Tune the journal-max-io value.

    If you are using AIO, you might be able improve performance by increasing the journal-max-io parameter value. Do not change this value if you are using NIO.