Bamboo Best Practice - System Requirements

The recommendations in this guide are not universal and the final configuration of your Bamboo instance will depend on your specific use case.

System requirements & considerations

  Note that Atlassian currently only supports Bamboo on x86 and 64-bit x86-derived hardware platforms.

Hardware considerations

CPU and memory

For Bamboo, the minimum CPU and memory requirements depend on the size and complexity of your plans. You need to consider:

  • Will your builds have functional tests as part of the plans?
  • Are your plans executed simultaneously? If so, how many plans will be running at any given time?
  • What are the requirements for your running builds, for example, do they need large amounts of memory/disk/swap space?
  • How many users will be using Bamboo at any given time? Like any web application, the system resource needed is proportional to the load experienced by the server.
  • How many local agents do you plan on running?


User scenarioUsage profile

Bamboo server

Individual user/

Small team

  • 10 - 20 plans
  • Little concurrent building
  • Light server use
4 core, 4 GB RAM
Medium team
  • 10 - 20 plans
  • Medium concurrency
  • Light server use
8 core, 8 GB RAM, remote agent use

Multiple small teams/

Large team

  • 20 - 100s plans
  • Plan branches
  • High concurrency
  • Medium server use
8 core, 16 GB RAM, more remote agents

Multiple large teams/

Department/Division

  • 1000s of plans
  • Frequent plan branches
  • High concurrency
  • High server use
16 core, 16 GB RAM, all remote agents

Storage

The Bamboo installation size is approximately 140 MB, however, Bamboo's storage requirements depend upon its usage pattern during use. The usage pattern depends on factors such as: 

  • How many plans you will run
  • How many tests each plan will execute
  • How many artifacts you are going to have and their size

Atlassian recommends that you allocate about 20 GB on top of the Bamboo installation size, and evaluate your usage patterns. Where usage is likely to grow, consider adding additional storage.

Software requirements

Bamboo is a pure Java application and should run on any platform, provided all the JDK requirements are satisfied.

The Supported platforms page lists the server and client software, and their versions, supported by Bamboo 8.1.

Browser

Disabling JavaScript in your browser, or using a script blocking tool like NoScript, will limit access to Bamboo's full functionality. JavaScript should be enabled.

Java

Bamboo requires the full Java Developers Kit (JDK) platform to be installed on your server's operating system.

Application server

Bamboo is a web application that requires an application server. Currently, Apache Tomcat is supported. Tomcat is a stable, lightweight, and fast performing application server, however, please note the following:

  1. Deploying multiple Atlassian applications in a single Tomcat container is not supported. We do not test this configuration and upgrading any of the applications (even for point releases) is likely to break it. There are also a number of known issues with this configuration (see this FAQ for more information).
  2. We also do not support deploying multiple Atlassian applications to a single Tomcat container for a number of practical reasons. Firstly, you must shut down Tomcat to upgrade any application, and secondly, if one application crashes, the other applications running in that Tomcat container will be inaccessible.
  3. Finally, we recommend not deploying any other applications to the same Tomcat container that runs Bamboo, especially if these other applications have large memory requirements or require additional libraries in Tomcat's lib subdirectory.

Database

Bamboo requires a relational database to store its data. Bamboo supports the most popular relational database servers, so we suggest using the one that you are most comfortable with administering. Bamboo ships pre-configured with an integrated HSQL database for evaluation purposes only. Since HSQLDB is prone to database corruption, we recommend configuring an external database for production environments.

Hence, if you intend to use Bamboo in a production environment, we strongly recommend that you connect Bamboo to a supported enterprise database system.

Other considerations

Bamboo also requires a number of services for efficient operation. You need to consider:

  • Build log size
  • Database connection pool size.
  • Number of local agents.
  • Number of remote or elastic agents.

Build log size considerations

In Bamboo, ActiveMQ is configured as a persistent queue, and messages sent over ActiveMQ are written to disk in the $BAMBOO_HOME/shared/jms_store directory. Build logs are sent over this queue, and large volumes of logs can slow the queue as it attempts to persist the message to disk. If the queue slows sufficiently it can cause the agent message broker to stop responding to other agents. This may present as large numbers of agents suddenly disconnecting from the server without any errors appearing in the server logs, and failing to reconnect until the server is restarted. 

Typically any log that is 100MB+ is a cause for concern, although large numbers of logs slightly smaller than this limit may cause similar issues.

Database connection pool size

The number of database connections available to Bamboo is the lower of two values: your DBMS connection limit and the configured Bamboo connection pool size. From Bamboo 4.2 and later, the Bamboo connection pool size has a default value of 100.
For a small to medium instances (~5 concurrent users, ~5 busy/building local agents, 20 remote agents, 50 plans), the default values are sufficient.

You should increase the connection limit if you notice UI freezes or general sluggish UI performance. Do not decrease the number of available connections below 25.
Note that having too many connections available to Bamboo carries no performance penalty as long as your DBMS can handle the load.


Example: How to estimate the number of db connections

The following formula gives a rough estimate of the number of database connections that will be required:

(Concurrent users)/5 + (Busy remote agents)/5 + (Local agents)*1.1 + (Amount of concurrent change detections)

For example, an instance with:

  • 5 concurrent users
  • 30 busy remote (or elastic) agents
  • 30 busy local agents
  • 60 plans with repository polling set to 60-second intervals (assume 3 seconds per change detection)

would require 1 + 6 + 33 + 3 = 43 connections.

Bamboo ships with a pre-configured connection limit, however this can be modified by editing the following value in your bamboo.cfg.xml file:

<property name="hibernate.c3p0.max_size">100</property>

Local agents considerations

If you run more than 5 concurrently building local agents, you'll probably need to adapt the connection limit because each busy local agent requires a live database connection.
Also, note that large amounts of busy (building) local agents can negatively influence the performance of a Bamboo server (and other services running on that host).

Remote and elastic agent considerations

Remote and elastic agents do not require special database connection settings.

Last modified on Oct 6, 2023

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.