Improving the performance of ActiveMQ in Bamboo
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
In Bamboo, the ActiveMQ broker is responsible for server-agent communication. If you are experiencing performance issues with the ActiveMQ, these may be due to the disk being synced at every journal write, which increases the load on the disk itself. To resolve this, you can configure a different disk synchronization policy in ActiveMQ.
Diagnosis
Performance issues observed empirically or with third-party monitoring tools.
Cause
Bamboo persists messages on the disk and syncs the disk after every journal write to guarantee the most seamless restart possible.
Solution
To improve the performance of ActiveMQ, try experimenting with a periodic synchronization policy. That way, if a write occurs, the disk will be synced based on the set intervals instead of after every journal write. This should reduce the load on the disk and improve throughput. The disk will also be synced when rolling over to a new journal file.
To do this, set the following system property on your Bamboo server:
1
bamboo.broker.kaha.journalDiskSyncStrategy=periodic
Configuring your system properties
In some rare cases, this solution may lead to a message missing between restarts, causing some builds to fail. However, we found this to be a safe trade-off. The set interval is equal to 1 second. As a result, possible data loss is limited to a maximum of 1 second’s worth of data.
For more information, go to the official ActiveMQ documentation.
Was this helpful?