Updated on May 17, 2020
The system requirements for Hyperledger Besu depend on different factors, including the:
- Size of the world state for the network.
- Number of transactions submitted to the network.
- Block gas limit.
- Number and complexity of JSON-RPC, PubSub, or GraphQL queries handled by the node.
Determining system requirements
CPU requirements are highest when syncing to the network and typically reduce after the node is synchronized to the chain head.
Java Virtual Machine size
Depending on your environment and network setup, Besu has the following minimum Java Virtual Machine (JVM) memory requiements. For:
- Private networks, 4GB
- MainNet and testnets, such as Ropten, 8GB.
Two JVM parameters can be set to suit your memory requirements:
-Xms<size>, which specifies the initial Java heap size.
-Xmx<size>, which specifies the maximum Java heap size.
Set the JVM options in the
BESU_OPTS environment variable.
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.
Do not use pruning in Hyperledger Besu v1.4 Pruning has a known bug.
How you synchronize with the Ethereum MainNet and whether you enable or disable pruning) determines your disk space requirement.
For mainnet nodes on AWS:
- The minimum box size is t3.large.
- The recommended box size is t3.xlarge.
The t3.xlarge recommendation is to speed up the sync process by giving it more resources. When the sync is completed, the box size can be reduced to t3.large.
If you set up your own VM locally using a VM manager such as VirtualBox:
- Ensure you enable Intel Virtualization Technology (VTx) and Virtualization Technology for Directed I/O (VT-d) in the BIOS settings.
- On Windows, you might need to disable Hyper-V in the Windows Feature list.
We recommend you create a VM with the following attributes:
- Memory Size: Set to 4096 MB (recommended)
- Create a virtual hard disk with at least 10 GB (20 GB recommended)
- Virtual hard disk file type: VDI (if you need to share it with other apps, use VHD)
- (Optional) You can create a shared directory to copy block files or genesis files from the host computer to the VM. For details on how to create a shared directory, see “Share Folders” in the Oracle VirtualBox documentation.