Sizing a Solana RPC node starts with role separation: a validator participates in consensus and manages vote/stake keys, while an RPC node serves read traffic and can run without voting. A full node keeps recent ledger history, whereas an archive/ledger node retains far more history for historical queries. Four resource dimensions dominate: CPU for transaction execution and ed25519 signature verification, RAM for account state and indexes, NVMe storage for the continuously growing ledger, and high-throughput, bursty network bandwidth with low-latency peering. Official Solana documentation publishes minimum and recommended hardware guidance that should be treated as a starting point and reconciled against the current release because requirements drift upward with network load. Rather than copying a spec sheet, derive storage from ledger growth rate times retention window, RAM from account set size, and CPU/NIC from observed ingest peaks. This article provides runnable diagnostics to capture those numbers and a results table to compare measured values against documented minimums and recommendations.
Role separation: validator versus RPC node
The first sizing decision is not hardware but role. A Solana validator participates in consensus, votes on blocks, and requires vote and stake key management; its hardware profile is shaped by consensus participation and increasingly demands high-end CPU, memory, and network. An RPC node, by contrast, serves read traffic to clients and can be run without voting, which changes the resource balance toward storage, memory, and network throughput rather than vote latency.
This distinction matters because many online hardware discussions conflate validator and RPC requirements. If your goal is reliable read access for applications, you are sizing an RPC node, not a validator. The Solana documentation on validator requirements publishes hardware guidance that is often cited for both roles, but you should read it with the role in mind and adjust for your read workload.
A related split is full versus archive. A full (non-archive) node keeps recent ledger history only, which bounds storage growth. An archive or ledger node retains far more history for historical queries, multiplying capacity requirements manyfold. For a deeper comparison, see Archive node vs full node.
- Validator: consensus participation, vote/stake keys, high-end CPU and network.
- RPC node: read traffic, no voting, storage- and memory-heavy.
- Full node: recent ledger history only, bounded storage growth.
- Archive/ledger node: extensive history, storage multiplies manyfold.
CPU: transaction execution and signature verification
Solana transaction execution and signature verification are CPU-bound. Every transaction includes ed25519 signatures that must be verified, and the runtime executes programs that consume compute units. During ingest, the node must keep up with the network's transaction rate, so both core count and single-thread speed matter. A CPU with many slow cores may struggle to verify signatures and execute transactions fast enough to stay in sync.
The practical implication is that you should measure CPU headroom under load, not just count cores. If your node falls behind during peak network activity, the bottleneck is often single-thread performance or insufficient cores for parallel signature verification. The Solana documentation provides guidance on node operation and ledger handling that informs CPU expectations, but you should reconcile it with the current release because requirements drift upward with network load.
For RPC nodes, CPU also affects how quickly you can serve JSON-RPC requests that trigger computation, such as simulation or account queries that require deserialization. The Solana JSON-RPC API defines the read surface your node serves, and heavy read traffic can compete with ingest for CPU.
- Signature verification (ed25519) is CPU-intensive.
- Transaction execution consumes compute units and CPU time.
- Core count and single-thread speed both matter for ingest.
- Measure CPU headroom under peak load, not just core count.
RAM: account state and index structures
Solana nodes hold account state and index structures in memory. If RAM is under-provisioned, the operating system will thrash, swapping to disk and degrading performance dramatically. The account set grows over time, so RAM requirements tend to increase with network usage. For RPC nodes, memory also caches frequently accessed data, which can improve read latency.
Sizing RAM is not a one-time calculation. You should monitor memory pressure and account for growth. A node that runs comfortably today may need more RAM in six months as the account set expands. The Solana documentation discusses account state and ledger storage, which are the primary memory consumers.
When planning, consider the difference between full and archive nodes. An archive node may need more RAM for indexes that cover historical data, while a full node can operate with less. For latency-sensitive read workloads, see Solana RPC latency for how memory and caching affect response times.
- Account state and indexes reside in memory.
- Under-provisioned RAM causes swapping and thrashing.
- Account set grows over time; plan for expansion.
- Archive nodes may need more RAM for historical indexes.
Storage: ledger growth and NVMe endurance
The Solana ledger consists of accounts and shreds and grows continuously. Storage must be fast NVMe with high TBW (terabytes written) endurance because the node writes constantly. Consumer-grade SSDs may wear out quickly under this write load. For archive nodes, capacity requirements multiply manyfold because historical ledger data is retained.
To size storage, derive it from ledger growth rate times retention window. If you know the current ledger size and the growth rate, you can estimate how much space you need for a given retention period. The Solana documentation provides guidance on ledger storage and node operation. For historical data queries, see Solana historical data over RPC.
Endurance is as important as capacity. A drive that is large enough but not rated for high write workloads will fail prematurely. Check the drive's TBW rating and ensure it exceeds your expected writes over the node's lifetime. For a runnable diagnostic to measure disk write throughput, see the section below.
- Ledger grows continuously; NVMe required.
- High TBW endurance is critical for write-heavy workloads.
- Archive nodes multiply capacity requirements manyfold.
- Derive storage from growth rate times retention window.
Network: bandwidth and low-latency peering
Solana's transaction and Turbine traffic is high-throughput and bursty. Bandwidth and low-latency peering matter more than for many chains. During peak activity, the node must ingest a large volume of transactions and propagate shreds. Insufficient bandwidth or high latency can cause the node to fall behind, leading to sync issues and stale reads.
For RPC nodes, network also affects how quickly clients can reach you. If you serve public traffic, you need enough bandwidth to handle concurrent requests and low-latency peering to the Solana network to keep your node in sync. The Solana documentation provides guidance on node operation, but you should measure your own network throughput and latency under load.
When sizing, consider both inbound and outbound bandwidth. Ingest is primarily inbound, while serving RPC requests is outbound. Bursty traffic means you need headroom above average utilization. For troubleshooting network-related issues, see Solana RPC timeouts and retries.
- High-throughput, bursty transaction and Turbine traffic.
- Low-latency peering keeps node in sync.
- Inbound for ingest, outbound for RPC responses.
- Provision headroom for bursty peaks.
Documented minimum versus recommended guidance
Official Solana documentation publishes hardware guidance that should be treated as a starting point. The validator requirements page lists minimum and recommended specifications, but these are not static. Requirements drift upward with network load and across releases, so you must reconcile them against the current release and your own workload.
The minimum specification is often just enough to run a node under ideal conditions. The recommended specification provides headroom for peak loads and future growth. For production RPC nodes serving real traffic, you should aim for the recommended tier or higher, and validate with measurements. Provider-specific behavior varies, so if you use a managed service, check their documented specifications.
Do not treat the documentation as a guarantee. It is a baseline. Your actual requirements depend on your read volume, retention needs, and latency targets. The next sections show how to measure and compare.
- Official docs publish minimum and recommended specs.
- Requirements drift upward with network load and releases.
- Minimum is for ideal conditions; recommended adds headroom.
- Validate against your own workload and measurements.
Deriving sizing from workload rather than spec sheets
Instead of copying a spec sheet, derive sizing from your workload. Storage equals ledger growth rate times retention window. RAM scales with account set size and index requirements. CPU and NIC are sized from observed ingest peaks. This approach ensures you provision for your actual needs rather than a generic baseline.
Start by measuring your current node or a candidate host. Capture CPU model and core count, memory, NVMe device model and free space, NIC speed, and a disk write throughput sample. Also capture the node's own sync and health output. These numbers form the basis for comparison against documented minimums and recommendations.
The following sections provide runnable diagnostics to collect these measurements. Use them on a candidate host or an existing node. Then fill the results table to make a verdict and decide on actions.
- Storage = ledger growth rate × retention window.
- RAM = account set size + index overhead.
- CPU/NIC = observed ingest peaks.
- Measure before you provision.
Runnable diagnostic: capturing host and node metrics
The following Node.js script collects key host metrics: CPU model and core count, total memory, NVMe device model and free space, NIC speed, and a disk write throughput sample. It also queries the Solana node's health and sync status via JSON-RPC. Run it on the candidate host or existing node.
The script uses standard Node.js modules and the child_process module to run system commands. It assumes a Linux environment with lscpu, lsblk, df, ethtool, and dd available. Adjust commands for your OS if needed. The JSON-RPC call uses the getHealth and getEpochInfo methods from the Solana JSON-RPC API.
const { execSync } = require('child_process');
const https = require('https');
function run(cmd) {
try {
return execSync(cmd, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'ignore'] }).trim();
} catch (e) {
return 'N/A';
}
}
function getCpuInfo() {
const model = run("lscpu | grep 'Model name' | cut -d: -f2").trim();
const cores = run("nproc");
return { model, cores };
}
function getMemory() {
const mem = run("free -h | awk '/^Mem:/ {print $2}'");
return mem;
}
function getNvmeInfo() {
const device = run("lsblk -d -o NAME,MODEL | grep nvme | head -1");
const free = run("df -h / | awk 'NR==2 {print $4}'");
return { device, free };
}
function getNicSpeed() {
const iface = run("ip route | grep default | awk '{print $5}' | head -1");
const speed = run(`ethtool ${iface} | grep Speed | awk '{print $2}'`);
return { iface, speed };
}
function measureDiskWrite() {
const out = run("dd if=/dev/zero of=/tmp/testfile bs=1M count=1024 conv=fdatasync 2>&1 | tail -1");
run("rm -f /tmp/testfile");
return out;
}
function rpcCall(method, params = []) {
return new Promise((resolve, reject) => {
const data = JSON.stringify({ jsonrpc: '2.0', id: 1, method, params });
const req = https.request({
hostname: 'localhost',
port: 8899,
path: '/',
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Content-Length': data.length }
}, (res) => {
let body = '';
res.on('data', chunk => body += chunk);
res.on('end', () => resolve(JSON.parse(body)));
});
req.on('error', reject);
req.write(data);
req.end();
});
}
(async () => {
console.log('CPU:', getCpuInfo());
console.log('Memory:', getMemory());
console.log('NVMe:', getNvmeInfo());
console.log('NIC:', getNicSpeed());
console.log('Disk write:', measureDiskWrite());
try {
const health = await rpcCall('getHealth');
const epoch = await rpcCall('getEpochInfo');
console.log('Health:', health.result);
console.log('Epoch:', epoch.result);
} catch (e) {
console.log('RPC error:', e.message);
}
})();Results table: comparing measured values to documented guidance
After running the diagnostic, fill the table below with your measured values. Compare them against the documented minimum and recommended specifications from the Solana validator requirements page or your provider's documentation. The verdict column helps you decide if the host is adequate. The action column suggests next steps.
This table is a template. You should fill it with your own measurements. Do not rely on generic numbers; your workload determines the verdict. For RPC nodes, also consider read traffic and retention needs. If you are using a managed provider, check their documented specifications and compare with your requirements.
- Dimension: CPU, RAM, Storage, Network.
- Measured value: from the diagnostic script.
- Documented minimum: from official docs or provider.
- Documented recommended: from official docs or provider.
- Verdict: adequate, marginal, or inadequate.
- Action: upgrade, monitor, or proceed.
| Dimension | Measured Value | Documented Minimum | Documented Recommended | Verdict | Action |
|-----------|----------------|--------------------|------------------------|---------|--------|
| CPU | | | | | |
| RAM | | | | | |
| Storage | | | | | |
| Network | | | | | |Troubleshooting common sizing bottlenecks
When a Solana RPC node underperforms, the bottleneck is often one of the four dimensions. If the node falls behind during peak network activity, check CPU utilization and single-thread performance. If the node becomes unresponsive or slow, check memory pressure and swapping. If disk I/O is saturated, check NVMe write throughput and endurance. If the node loses sync or has high latency, check network bandwidth and peering.
For RPC-specific issues, such as timeouts or stale reads, see Solana RPC timeouts and retries. For latency optimization, see Solana RPC latency. For historical data queries, see Solana historical data over RPC.
Remember that running a public RPC node for real traffic also requires rate limiting, TLS, and monitoring. These are operational concerns beyond hardware sizing. If you need reliable read access at scale, a managed provider may be more cost-effective. See Solana RPC endpoints (RPC Assistant) for provider options.
- CPU bottleneck: node falls behind during peak activity.
- RAM bottleneck: swapping, unresponsive node.
- Storage bottleneck: disk I/O saturated, slow writes.
- Network bottleneck: sync loss, high latency.
- Operational needs: rate limiting, TLS, monitoring.
Limitations, tradeoffs, and next steps
Solana hardware guidance changes across releases and must be re-checked. The numbers you measure today may not be sufficient next year. Running a public RPC node for real traffic also requires rate limiting, TLS, and monitoring, which add operational overhead. A self-hosted node is rarely the cheapest path to reliable read access at scale compared with a managed provider.
If you decide to self-host, start with the diagnostic script, fill the results table, and compare against documented guidance. For managed options, review RPC pricing and API service. For network-specific details, see Solana. For more infrastructure guides, visit the OnFinality Learn hub.
Next steps: run the diagnostic on your candidate host, fill the results table, and decide whether to self-host or use a managed provider. If you self-host, monitor the four dimensions continuously and plan for growth. If you use a provider, verify their documented specifications and test with your workload.
- Hardware guidance drifts; re-check with each release.
- Public RPC requires rate limiting, TLS, monitoring.
- Self-hosting may not be cheapest at scale.
- Run diagnostics, fill the table, decide.
- Monitor continuously and plan for growth.