Summary
Shared Solana RPC access pools many applications onto the same node infrastructure, which keeps costs low and setup fast but introduces noisy-neighbour effects during network congestion. Dedicated node access gives your workload its own Solana validator or RPC node, so throughput, rate limits, and upgrade timing are predictable. This article compares both models across latency, rate limits, WebSocket reliability, archive needs, and operational overhead, then helps you decide which fits your Solana workload.
Solana's high-throughput design changes how you should think about RPC infrastructure. Blocks land in the hundreds of milliseconds, transaction volume is large, and many applications depend on WebSocket subscriptions rather than simple request/response polling. That makes the choice between shared and dedicated node access more consequential than on lower-throughput chains.
This article compares both models directly, then gives you a decision path for picking one. If you already know your workload is bursty or latency-sensitive, jump to the decision section below. If you are still mapping requirements, read the comparison first.
Quick recommendation: which access model fits your workload?
Use this as a fast filter before reading the full comparison.
- Choose shared Solana RPC access if you are prototyping, running a wallet or dashboard with moderate traffic, or you want a low-friction endpoint without managing infrastructure. A managed shared endpoint such as the public Solana RPC from OnFinality is enough for many read-heavy apps.
- Choose dedicated Solana node access if you run trading infrastructure, indexers, high-frequency bots, or anything that depends on stable WebSocket subscriptions and predictable throughput. Dedicated nodes remove noisy-neighbour effects and let you size hardware to your workload.
- Choose a hybrid if you want shared endpoints for development and failover, plus dedicated nodes for production traffic. This is common for teams that want cost control without sacrificing production reliability.
If you are unsure, start on a shared endpoint, instrument your request patterns, and move to dedicated nodes when you see rate-limit errors, subscription drops, or latency spikes during network congestion.
How shared and dedicated Solana access actually differ
The difference is not just "more resources." It is about who else is on the node, how requests are scheduled, and who controls upgrades.
Shared access means a provider runs Solana RPC nodes and routes many customers' requests to them. You get an endpoint, usually with a rate limit per API key or per IP. The provider handles node operations, upgrades, and monitoring. You trade some predictability for lower cost and zero maintenance.
Dedicated access means a node (or cluster of nodes) is reserved for your workload. You control the request volume it serves, you can tune it for your access patterns, and you are not competing with other tenants for compute or bandwidth. You typically pay more and may take on more configuration responsibility, depending on whether the provider manages the node for you.
On Solana specifically, two factors amplify the difference:
- Subscription-heavy workloads. Many Solana apps rely on
accountSubscribe,logsSubscribe, orprogramSubscribe. Shared nodes must multiplex many subscribers, and a single heavy subscriber can affect delivery timing for others. - Bursty traffic. Solana activity clusters around certain programs and events. During those bursts, shared capacity is contended, while dedicated capacity is yours.
Comparison table: shared vs dedicated Solana RPC
| Dimension | Shared Solana RPC | Dedicated Solana node |
|---|---|---|
| Cost profile | Lower, usage-based or tiered | Higher, reserved capacity |
| Rate limits | Provider-defined per key/IP | Set by your hardware and config |
| Latency consistency | Varies with tenant load | More consistent under your load |
| WebSocket reliability | Multiplexed across tenants | Subscriptions isolated to your node |
| Archive / historical data | Depends on provider plan | Configurable, including archive |
| Upgrade timing | Provider-controlled | You or provider schedule it |
| Operational overhead | Minimal | Higher unless fully managed |
| Best fit | Prototypes, wallets, dashboards | Trading, indexers, high-volume apps |
OnFinality offers both models: a managed Solana RPC API for shared access and dedicated nodes when you need reserved capacity. You can compare cost and capacity options on the RPC pricing page.
What to measure before you switch
Do not switch to dedicated nodes based on a feeling. Measure first. The signals below tell you whether shared access is actually the bottleneck.
- Rate-limit errors. Count
429responses and JSON-RPC error codes over a representative week. A steady trickle during peak hours is a strong signal. - Subscription gaps. Log WebSocket disconnects and missed slot notifications. Frequent reconnects during congestion point to shared multiplexing pressure.
- Latency distribution, not averages. Track p50, p95, and p99 for
getLatestBlockhashandsendTransaction. A widening p99 is more telling than a stable average. - Failed transactions. Separate failures caused by your logic from failures caused by stale blockhashes or dropped submissions.
A small monitoring probe can capture the essentials:
# Measure getLatestBlockhash latency against a Solana RPC endpoint
for i in $(seq 1 20); do
curl -s -o /dev/null -w "%{time_total}s\n" \
-X POST https://solana.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getLatestBlockhash","params":[{"commitment":"confirmed"}]}'
done
Run this against both a shared endpoint and a dedicated endpoint during the same time window. The comparison is only meaningful under identical load and network conditions.
Solana-specific workload patterns that push you to dedicated nodes
Not every Solana app needs dedicated infrastructure. These patterns usually do.
High-frequency transaction submission. If you submit transactions continuously, you depend on fresh blockhashes and fast confirmation. Shared rate limits can throttle submission exactly when you need it most.
Program and account subscriptions at scale. Indexers and analytics services that subscribe to many accounts or programs generate sustained WebSocket load. Isolating that load on a dedicated node prevents it from competing with your own request traffic.
Archive and historical queries. If you query old slots, transactions, or account states, you need archive data. Archive requirements are easier to guarantee on dedicated nodes than on shared plans with retention limits.
Latency-sensitive trading or liquidations. When a few hundred milliseconds changes the outcome, consistent latency matters more than average latency.
Compliance or isolation requirements. Some teams need workload isolation for policy reasons, independent of performance.
Configuring a Solana endpoint in your app
Whether shared or dedicated, the connection pattern is similar. The difference is the endpoint URL and the capacity behind it. Here is a minimal JavaScript example using a Solana JSON-RPC endpoint:
import { Connection, PublicKey } from "@solana/web3.js";
// Shared endpoint example; swap in your dedicated endpoint URL for production
const connection = new Connection("https://solana.api.onfinality.io/public", {
commitment: "confirmed",
wsEndpoint: "wss://solana.api.onfinality.io/public-ws",
});
const slot = await connection.getSlot();
console.log("Current slot:", slot);
// WebSocket subscription example
const subId = connection.onAccountChange(
new PublicKey("YourAccountPublicKeyHere"),
(accountInfo) => {
console.log("Account changed:", accountInfo.lamports);
}
);
For dedicated nodes, replace the URL with the endpoint your provider issues. Keep the WebSocket endpoint separate from the HTTP endpoint, and confirm both are reachable from your deployment environment before switching production traffic.
Migration checkpoints when moving from shared to dedicated
Moving to dedicated nodes is an operational change, not just a URL swap. Work through these checkpoints.
- Baseline first. Record latency, error rates, and subscription stability on the shared endpoint for at least a week.
- Run both in parallel. Point a percentage of traffic at the dedicated endpoint and compare against the baseline.
- Verify WebSocket behaviour. Confirm subscription delivery, reconnect logic, and slot coverage under real load.
- Check archive access. If you query historical data, confirm retention and method support before cutover.
- Plan failover. Keep a shared endpoint as a fallback so a single node issue does not take down your app.
- Update monitoring. Alert on the same signals you baselined, now against the dedicated endpoint.
A simple failover pattern in code keeps you resilient:
const endpoints = [
"https://your-dedicated-solana-endpoint",
"https://solana.api.onfinality.io/public",
];
async function withFailover(fn) {
for (const url of endpoints) {
try {
const connection = new Connection(url, "confirmed");
return await fn(connection);
} catch (err) {
console.warn(`Endpoint failed: ${url}`, err.message);
}
}
throw new Error("All Solana RPC endpoints failed");
}
Cost and risk tradeoffs to weigh
Shared access optimises for cost and simplicity. Dedicated access optimises for predictability and isolation. The right answer depends on what a bad minute costs you.
- If a failed request means a retry, shared access is usually fine.
- If a failed request means a missed trade, a dropped liquidation, or a broken user flow, dedicated capacity is easier to justify.
- If your traffic is seasonal or spiky, a hybrid model lets you keep shared capacity for baseline load and dedicated capacity for peaks.
Review RPC pricing to model both options against your expected request volume, and check supported RPC networks if you operate across multiple chains and want consistent infrastructure.
Key Takeaways
- Shared Solana RPC access is cost-effective and low-maintenance, but capacity is multiplexed across tenants.
- Dedicated Solana nodes give you predictable throughput, isolated WebSocket subscriptions, and configurable archive access.
- Measure rate-limit errors, subscription gaps, and p99 latency before deciding to switch.
- Subscription-heavy and latency-sensitive workloads benefit most from dedicated nodes.
- A hybrid setup with shared failover is a practical middle ground for production apps.
- OnFinality provides both shared Solana RPC and dedicated node options.
Frequently Asked Questions
Is dedicated Solana RPC always faster than shared? Not necessarily in raw latency terms. The main benefit is consistency and isolation. Dedicated nodes remove contention from other tenants, which matters most during network congestion.
Can I start on shared access and move later? Yes. Many teams start shared, baseline their traffic, and migrate to dedicated nodes when they hit rate limits or subscription instability. Keep the shared endpoint as a failover path.
Do I need archive access on Solana? Only if you query historical slots, transactions, or account states. If you do, confirm archive retention and method support with your provider before committing.
How do WebSocket subscriptions differ between the two models? On shared nodes, subscriptions are multiplexed across tenants, so heavy subscribers can affect delivery timing. On dedicated nodes, your subscriptions run in isolation, which improves stability for subscription-heavy apps.
What is the simplest way to decide? Measure first. If your shared endpoint shows rate-limit errors, subscription gaps, or widening p99 latency under real load, evaluate dedicated capacity. Otherwise, shared access is likely sufficient.