Skip to main content

System requirements

Determine public network system requirements by checking CPU and disk space requirements using Prometheus. Grafana provides a sample dashboard for Besu.

tip

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:

  1. 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
  2. Uncompress the binaries:

    tar -xvf YOUR_J9_IMAGE.tar.gz
  3. Move the binaries to bin directory:

    sudo cp -r YOUR_IMAGE/ /usr/bin/
  4. Specify OpenJ9 for Java on your machine:

    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/YOUR_IMAGE" 1
    sudo update-alternatives --config java (and choose OpenJ9)

    Change your JAVA_HOME to OpenJ9 (if using the JDK implementation), where jdk-install-dir is the installation location you specified:

    export JAVA_HOME=jdk-install-dir

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.

warning

If you are using a more recent release than 26.5.0, resource requirements may have increased.