Server host requirements and recommendations
This section describes the general requirements and recommendations for the machine running SonarQube in case of a ZIP, Docker, or Kubernetes installation. Additional requirements specific to an installation type may be mentioned in the respective installation section. For the Data Center Edition, see also Installing Data Center Edition.
See also our reference architectures:
Supported operating systems
SonarQube can run on the following operating systems (note that z/OS is not supported):
- Linux (x64, AArch64)
- Windows (x64)
- macOS (x64, AArch64)
SonarQube can run, with limitations, on Linux hosts where FIPS (Federal Information Processing Standard) is enabled. See Configuring SonarQube to run in FIPS mode in Pre-installation steps on Linux systems.
Hardware requirements
In the table below:
- A small-scale installation is typically a Community Edition / Developer Edition installation that supports up to 1M lines of code.
- A large-scale installation is typically a single-node installation of Enterprise Edition that supports up to 50M lines of code, or a search or application node of a Data Center Edition cluster.
The requirements below should be considered a starting point for new installations. As usage patterns vary across installations, it is important that SonarQube instances are monitored for CPU, memory, and storage usage. Periodic adjustments may be necessary based on monitoring.
Category | Requirement |
---|---|
RAM | For a small-scale installation:
For a large-scale installation:
|
Processor | 64-bit system. For a small-scale installation:
For a large-scale installation:
In addition, for a server installation from a Docker image:
|
Disk space | Depends on how much code you analyze with SonarQube. For a small-scale installation:
|
Hardware configuration recommendations
Elasticsearch is used by SonarQube in the background. To ensure good performance of your SonarQube, you need to follow these recommendations that are linked to Elasticsearch usage.
Category | Recommendation |
---|---|
Disk |
|
RAM | It is recommended that you give 50% of the available memory to Elasticsearch heap while leaving the other 50% free. The reason is that Lucene (used by Elasticsearch) is designed to leverage the underlying OS for caching in-memory data structures.
See the following Elasticsearch articles for more details: |
CPU | If you need to choose between faster CPUs or more cores, then choose more cores. The extra concurrency that multiple cores offer will far outweigh a slightly faster clock speed. By nature, data is distributed on multiple nodes, so execution time depends on the slowest node. It's better to have multiple medium boxes than one fast and one slow. |
I/O scheduler for SSD | If you use SSD, do not use the CFQ (Completely Fair Queuing) I/O scheduler (this is the defaul I/O scheduler under most Unix distributions). Use either the deadline or the NOOP scheduler instead. When you write data to disk, the I/O Scheduler decides when that data is actually sent to the disk. The CFQ allocates "time slices" to each process, and then optimizes the delivery of these various queues to the disk. It is optimized for spinning media: the nature of rotating platters means it is more efficient to write data to disk based on physical layout. The deadline scheduler optimizes based on how long writes have been pending, while NOOP is just a simple FIFO queue. |
Hard drives | They should have excellent read and write performance. Most importantly, the "data" folder houses the Elasticsearch indices on which a huge amount of I/O will be done when the server is up and running. Read and write hard drive performance will therefore have a big impact on the overall SonarQube server performance. |
Software requirements
Category | Requirement |
---|---|
Web browser |
|
Java | Applies only to a server installation from the ZIP file.
Note: SonarQube is able to analyze any kind of Java source files regardless of the version of Java they comply with. |
Was this page helpful?