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
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:
Uncompress the binaries:
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
sudo cp -r YOUR_IMAGE/ /usr/bin/
sudo cp -r jdk-17.0.5+8/ /usr/bin/
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)
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/bin/jdk-17.0.5+8/bin/java"
JAVA_HOMEto OpenJ9 (if using the JDK implementation), where
jdk-install-diris the installation location you specified:
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.
Use local SSD storage for high throughput nodes (validators and RPC nodes). Read-only nodes can use a lower performance setup.
We are running 22.4.2 Mainnet nodes using
We synchronized the 22.4.2 Mainnet nodes using
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.