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 17+ to run. We currently recommend two Java distributions, OpenJDK 17 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/semeru17-binaries/releases/download/jdk-17.0.5%2B8_openj9-0.35.0/ibm-semeru-open-jdk_x64_linux_17.0.5_8_openj9-0.35.0.tar.gz
Uncompress the binaries:
- Command
- Example
tar -xvf YOUR_J9_IMAGE.tar.gz
tar -xvf ibm-semeru-open-jdk_x64_linux_17.0.5_8_openj9-0.35.0.tar.gz
Move the binaries to
bin
directory:- Command
- Example
sudo cp -r YOUR_IMAGE/ /usr/bin/
sudo cp -r jdk-17.0.5+8/ /usr/bin/
Specify OpenJ9 for Java on your machine:
- Command
- Example
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/YOUR_IMAGE" 1
sudo update-alternatives --config java (and choose OpenJ9)sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/jdk-17.0.5+8/bin/java"
Change your
JAVA_HOME
to OpenJ9 (if using the JDK implementation), wherejdk-install-dir
is the installation location you specified:- Command
- Example
export JAVA_HOME=jdk-install-dir`
export JAVA_HOME=/usr/bin/jdk-17.0.5+8
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
Fast synchronization with pruning enabled requires approximately 750 GB of disk space. Full synchronization requires approximately 3 TB.
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.
AWS requirements
We are running 22.4.2 Mainnet nodes using m6gd.2xlarge
boxes.
We synchronized the 22.4.2 Mainnet nodes using m6gd.2xlarge
boxes.
Using a larger box while synchronizing speeds up the sync process by giving it more resources. When the sync is completed, the box size can be reduced.
If you are using a more recent release than 22.4.2, resource requirements may have increased.