Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
RPC Assistant

你能从限流和吞吐量的角度比较 Solana RPC 提供商吗?

摘要

可以。Solana RPC 提供商的主要区别在于它们如何计量请求(按秒 vs 按方法 vs 按计算单元)、允许的突发余量,以及当共享限制成为障碍时,你是否可以迁移到专用节点。本文详细介绍了你会遇到的限流模型,并为你提供了一种在做出承诺之前进行比较的实用方法。

你将获得一个比较表格、常见 Solana JSON-RPC 调用的方法成本映射、用于测量真实余量的监控代码片段,以及关于何时专用 Solana 节点比共享端点更合适的指导。

如何在不猜测的情况下比较 Solana RPC 速率限制

大多数 Solana RPC 比较止步于“每秒请求数”。这个数字是真实的,但它掩盖了真正会破坏生产应用的部分:哪些方法被计量、是否允许突发、WebSocket 订阅如何计数,以及当你越线时会发生什么。在选择提供商之前,先确定以下三种配置中哪一种与你的工作负载匹配。

  • 轻量交互式应用(钱包、仪表盘、几百个用户):带有每秒请求上限的共享端点通常就足够了。优化可预测的成本和简单的故障转移。
  • 索引器或分析任务(回填、getSignaturesForAddress、getProgramAccounts):方法级或计算单元计量比原始 RPS 更重要,因为重型调用会消耗不成比例的容量。
  • 交易或实时服务(WebSocket 订阅、紧密确认循环):你需要了解订阅如何计费,以及是否可以获得专用节点来消除共享池争用。

如果你能说出你的配置,剩下的比较就是机械性的。如果不能,请从测量你当前的请求组合开始——下面的监控部分展示了如何操作。

你实际会遇到的限流模型

Solana RPC 提供商通常以四种方式之一计量流量,许多提供商结合两种。

  1. 每秒请求上限(RPS)。 每秒请求数的固定上限,有时带有短暂的突发允许量。简单,但一个昂贵的调用可能消耗与廉价调用相同的“槽位”。
  2. 按方法限制。 特定方法(通常是 getProgramAccounts、getSignaturesForAddress、getTransaction)有自己的较低上限,因为它们的服务成本高昂。
  3. 计算单元或信用计量。 每个方法被分配一个成本权重;你的计划每秒或每月授予一个预算。这是混合工作负载最公平的模型,但如果没有工具,最难预测。
  4. 连接和订阅限制。 对并发 WebSocket 连接、每个连接的订阅数或两者的上限。很容易被忽视,直到你的实时数据流无声地中断。

一个宣传高 RPS 数字但应用严格按方法限制的提供商,可能感觉比一个标称速率较低但方法预算慷慨的提供商更慢。始终要求方法级细分,而不仅仅是顶线数字。

提供商评估矩阵

当你与任何 Solana RPC 提供商(包括 OnFinality)交谈时,使用此表作为检查清单。右侧列是拿到答案后该做什么。

比较内容要问的问题为什么它会改变你的决定
计量模型RPS、按方法还是计算单元?决定你的重型调用还是调用量是瓶颈
突发余量在稳态上限之上是否有短暂的突发?平滑流量峰值,而无需立即升级计划
昂贵方法策略getProgramAccounts 和 getSignaturesForAddress 是否单独设限?这些调用主导索引器成本,是限流的常见来源
WebSocket 计费订阅是否与 HTTP 计入同一预算?实时应用可能仅通过订阅就耗尽计划
专用选项你能迁移到专用 Solana 节点吗?当共享限制成为约束时,消除共享池争用
故障转移你能运行第二个端点并在出错时切换吗?防止提供商侧事件和计划上限
可观测性你能获得按方法的使用情况和错误细分吗?让你合理调整计划规模,而不是过度购买

OnFinality 通过其 Solana 网络页面 提供共享 Solana RPC,并通过 专用节点基础设施 提供专用 Solana 节点,当共享限制不再适合时。使用上述相同行与其他提供商进行比较,以便决策是同类比较。

每个 Solana 方法的成本

并非每个 JSON-RPC 调用都是平等的。下表按常见 Solana 方法对共享端点施加的压力进行分组。将其视为规划指南,而非固定价格表——确切权重因提供商而异。

方法典型权重限流规划注意事项
getLatestBlockhash低频繁但廉价;在确认循环中安全
getBalance、getAccountInfo低适合中等量的交互式应用
sendTransaction中注意重试风暴;在重发前去重
getTransaction、getSignatureStatuses中在紧密循环中轮询这些会迅速累积
getSignaturesForAddress高仔细分页;回填可能消耗整个预算
getProgramAccounts非常高限流的经典原因;积极缓存和过滤
WebSocket accountSubscribe / logsSubscribe不定根据提供商按订阅或按消息计数

实际结论:如果你的工作负载由底部三行主导,带有按方法上限的共享端点将在你的 RPS 上限之前很久就限制你。这是评估专用节点的最明确信号。

在切换之前测量你的真实余量

不要根据营销数字比较提供商。先测量你自己的流量,然后进行比较。一个记录延迟和错误代码的小型探针会告诉你实际所处的位置。

// 最小 Solana RPC 探针:延迟 + 错误采样
const ENDPOINT = "https://solana.api.onfinality.io/public";

async function probe(method, params = []) {
  const start = Date.now();
  const res = await fetch(ENDPOINT, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ jsonrpc: "2.0", id: 1, method, params }),
  });
  const body = await res.json();
  return {
    method,
    status: res.status,
    ms: Date.now() - start,
    error: body.error?.code ?? null,
  };
}

(async () => {
  const calls = [
    ["getLatestBlockhash", []],
    ["getBalance", ["11111111111111111111111111111111"]],
  ];
  for (const [m, p] of calls) console.log(await probe(m, p));
})();

在相同条件下,针对你当前的端点和候选端点运行此代码。跟踪三个信号:中位延迟、HTTP 429 响应率以及 JSON-RPC 错误代码,如 -32005(节点落后或受限)。在稳定流量下 429 率上升是你接近上限的最早迹象。

如需快速手动检查,单个 curl 调用可确认连接性和响应格式:

curl -s https://solana.api.onfinality.io/public \
  -X POST -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'

健康的端点返回 {"jsonrpc":"2.0","result":"ok","id":1}。如果你在这里看到错误,问题在于连接性或端点本身,而不是你的速率限制。

WebSocket 订阅及其隐藏预算

实时 Solana 应用依赖 WebSocket 订阅,这是限流比较最常出错的地方。两个提供商可以宣传相同的 HTTP RPS,但对订阅的处理完全不同。

  • 有些将每个订阅计入你的请求预算;有些则计算每条传递的消息。
  • 有些限制并发连接;有些限制每个连接的订阅数。
  • 重连行为很重要:如果提供商积极断开空闲连接,你的客户端可能会不断重新订阅并消耗预算。

当你评估提供商时,具体询问 accountSubscribe、logsSubscribe 和 slotSubscribe 如何计量,以及 WebSocket 端点是否与 HTTP 共享预算。OnFinality 为 Solana 公开了 HTTP 和 WebSocket 传输;确切的端点列在 Solana 网络页面 上。

当共享端点不再足够时

有一个点,调整客户端不再有帮助,共享池本身成为约束。注意这些信号:

  • 429 响应出现在你的正常流量水平,而不仅仅是峰值期间。
  • getProgramAccounts 或回填任务持续失败或超时。
  • WebSocket 订阅在负载下断开,重新订阅循环开始。
  • 你的提供商的按方法上限低于你对一两个方法的稳态需求。

此时,比较从“哪个共享计划”转向“共享 vs 专用”。专用 Solana 节点为你的工作负载提供自己的容量,而不是共享池,从而消除来自其他租户的争用。它不一定更便宜,因此要权衡它与围绕共享限制进行工程设计的成本。查看 RPC 定价 了解计划形态,查看 专用节点基础设施 了解专用选项。

切换 Solana RPC 提供商的迁移清单

如果你决定迁移,请以受控方式进行,而不是硬切换。

  1. 清点你的方法。 列出你的应用使用的每个 JSON-RPC 方法和订阅,以及大致调用量。
  2. 将调用量映射到新的计量模型。 将你的组合转换为候选提供商的单位(RPS、方法上限或信用),以便进行同类比较。
  3. 并行运行两个端点。 将一定比例的读流量发送到新端点,并比较延迟和错误率。
  4. 添加故障转移。 配置辅助端点,并在 429 或连接错误时切换,而不是让请求失败。
  5. 重新测试重型任务。 在依赖新端点之前,针对它运行 getProgramAccounts 或回填任务。
  6. 最后切换写入。 仅在读取稳定后移动 sendTransaction 流量,并暂时保留旧端点作为回退。

保持并行运行窗口足够长,以覆盖完整的流量周期,包括你最繁忙的时间。

关键要点

  • Solana RPC 限流很少只是 RPS;按方法上限、计算单元计量和订阅限制通常决定你能运行什么。
  • 像 getProgramAccounts 和 getSignaturesForAddress 这样的昂贵方法是最常见的限流原因,而不是原始调用量。
  • 在根据标题数字比较提供商之前,先测量你自己的延迟、429 率和 JSON-RPC 错误代码。
  • 询问 WebSocket 订阅如何计量,因为实时应用可能仅通过订阅就耗尽计划。
  • 当共享限制成为约束时,专用 Solana 节点消除共享池争用;将其与围绕限制进行工程设计的成本进行比较。
  • OnFinality 提供共享 Solana RPC 和专用 Solana 节点;从 Solana 网络页面、RPC 定价 和 支持的 RPC 网络 的完整列表开始。

常见问题解答

所有 Solana RPC 提供商都使用相同的限流模型吗? 不。有些使用固定的每秒请求上限,有些应用按方法限制,有些使用计算单元或信用计量。许多结合两种或更多。模型比标题数字更重要,因为它决定你的哪些调用首先被限流。

为什么我的应用在请求率很低的情况下仍然达到限制? 通常是因为少数昂贵方法主导了你的使用。像 getProgramAccounts 和 getSignaturesForAddress 这样的调用消耗的容量远超其请求计数所暗示的,因此总体速率低仍可能触发按方法上限。

WebSocket 订阅是否与 HTTP 调用计入同一限制? 这取决于提供商。有些将订阅或传递的消息计入你的预算,有些则限制并发连接。在承诺之前询问,尤其是对于实时应用。

我什么时候应该从共享 Solana 端点迁移到专用节点? 当 429 在正常流量水平出现、重型方法持续失败或 WebSocket 订阅在负载下断开时。此时共享池是约束,专用节点为你的工作负载提供自己的容量。

在切换之前如何测试新的 Solana RPC 提供商? 并行运行两个端点,将一部分读流量发送到新端点,并比较延迟、429 率和 JSON-RPC 错误代码。重新测试你最重的任务,然后最后移动写入流量,并设置故障转移。

我可以使用 OnFinality 进行 Solana RPC 吗? 可以。OnFinality 提供共享 Solana RPC 和专用 Solana 节点。查看 Solana 网络页面 获取端点,查看 RPC 定价 了解计划详情。

RPC 知识库

相关 RPC 内容

网络 RPCSolana

Solana RPC 端点:如何连接、配置和调试

Solana RPC 端点是您的 dApp 或验证器用来向 Solana 网络发送 JSON-RPC 请求的 URL。本页介绍主网和开发网端点、如何在代码中配置它们,以及如何调试常见的连接问题。对于生产环境的工作负载,OnFinality 提供的托管或专用 RPC 端点可提供可靠性和可扩展性。...

网络 RPCSORA

什么是 SORA 区块链项目,如何在其上构建?

SORA 区块链项目是一个基于 Substrate 构建的去中心化货币系统和 DeFi 平台,旨在创建一个超国家经济框架。它包括 XOR 代币、Polkaswap DEX 和 TBC(代币绑定曲线)。本文解释了该项目的架构、如何通过 RPC 端点连接到 SORA 网络,以及如何选择合适的基础设施来构...

网络 RPCEnjin

Enjin RPC:端点、链设置与开发者工作流

Enjin 运行两条基于 Substrate 的链:Enjin Matrix Chain(NFT 和代币的应用层)和 Enjin Relay Chain(共识和安全层)。两者都使用 Substrate RPC(而非 EVM JSON-RPC),因此开发者需要使用 Polkadot.js 或原始的 W...

网络 RPCTON

什么是 TON RPC,如何使用它?

# 什么是 TON RPC,如何使用它? TON(The Open Network)是一个为高可扩展性和与 Telegram 深度集成而设计的 layer-1 区块链。与 EVM 链不同,TON 采用独特的分片和异步智能合约架构。要从 Web 应用程序与 TON 交互,需要一个 RPC(远程过程调用...

测试网 RPCPolygon

Polygon Amoy RPC 端点:链设置、水龙头和调试

获取 Polygon Amoy RPC 端点、链 ID 和浏览器详细信息,用于测试网开发。了解如何配置钱包和 dApp、从水龙头获取测试 POL,以及调试常见的 RPC 问题。比较公共、共享和专用节点选项,以获得可靠的 Amoy 访问。...

RPC 提供商选择Avalanche

如何为生产级 dApp 选择合适的 Avalanche RPC 提供商

选择合适的 Avalanche RPC 提供商对于 dApp 的性能、可靠性和成本至关重要。本文涵盖了关键评估标准——延迟、吞吐量、归档支持和定价模型——并帮助您比较 C 链、X 链、P 链和子网的提供商。无论您需要共享公共端点还是专用节点,我们都会概述在投入生产基础设施之前需要检查的内容。...

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始