System requirements
Determine public network system requirements by checking CPU and disk space requirements using Prometheus. Grafana provides a sample dashboard for Besu.
CPU requirements are highest when syncing to the network and typically reduce after the node is synchronized to the chain head.
Java distribution and installation
Besu requires an installation of Java 21+ to run. We currently recommend two Java distributions, OpenJDK 21 and OpenJ9, though you can experiment based on your needs.
OpenJDK is the default for many Java users and is balanced in performance and garbage collection. OpenJ9 consumes less memory and system resources, but can have worse performance on some setups.
If you have more than 32GB RAM (for Besu and your consensus client), use OpenJDK. If you have less RAM:
- If you're on Linux (or Unix-based) and your CPU is x86-64 bit architecture (like Intel), use OpenJ9.
- If you're on ARM-64 CPU architecture (Mac M-series, Raspberry Pi), use OpenJDK.
If you have OpenJDK installed or need a fresh installation of OpenJ9, you can pick up the OpenJ9 docker image, or install the OpenJ9 JDK using the following steps:
-
Get the binaries corresponding to your OS architecture. For example:
wget https://github.com/ibmruntimes/semeru21-certified-binaries/releases/download/jdk-21.0.3%2B9_openj9-0.44.0/ibm-semeru-certified-jdk_x64_linux_21.0.3.0.tar.gz -
Uncompress the binaries:
- Command
- Example
tar -xvf YOUR_J9_IMAGE.tar.gztar -xvf ibm-semeru-certified-jdk_x64_linux_21.0.3.0.tar.gz -
Move the binaries to
bindirectory:- Command
- Example
sudo cp -r YOUR_IMAGE/ /usr/bin/sudo cp -r jdk-21.0.3+9/ /usr/bin/ -
Specify OpenJ9 for Java on your machine:
- Command
- Example
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/YOUR_IMAGE" 1sudo update-alternatives --config java (and choose OpenJ9)sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/jdk-21.0.3+9/bin/java"Change your
JAVA_HOMEto OpenJ9 (if using the JDK implementation), wherejdk-install-diris the installation location you specified:- Command
- Example
export JAVA_HOME=jdk-install-direxport JAVA_HOME=/usr/bin/jdk-21.0.3+9
Java Virtual Machine size
For Mainnet and testnets, the minimum Java Virtual Machine (JVM) memory requirement is 8 GB.
JVM memory requirements are highest when syncing, but will reduce after the node is synchronized to the chain head. Monitor your system to determine your actual JVM memory needs.
Disk space
The disk space required for syncing a Besu node depends on the sync mode and data storage format used. Using snap sync with Bonsai on Mainnet requires about 1.14 TB.
See the current Mainnet storage estimates for more information.
Disk type
Use local SSD storage for high throughput nodes (validators and RPC nodes). Read-only nodes can use a lower performance setup.
You can use local SSDs through SCSI interfaces. For higher performance in production settings, we recommend upgrading to NVMe interfaces.
Reference environment
Recent Mainnet Bonsai snap sync measurements used AWS m8g.2xlarge instances with 8 vCPUs,
30 GiB memory, and a 1.9 TB Amazon EBS data volume.
Performance test nodes used provisioned disk IOPS and throughput.
Using a larger instance or faster disk while synchronizing can reduce sync time.
After the node is synchronized, you can reduce the instance size based on observed CPU, memory,
and disk I/O usage.
If you are using a more recent release than 26.5.0, resource requirements may have increased.