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

哪些 Solana RPC 提供商的速率限制最具竞争力?

摘要

比较 Solana RPC 提供商的速率限制结构、突发允许量和 WebSocket 并发数。了解在免费层、付费计划和专用节点中应检查什么,以及如何将限制与您的应用流量模式相匹配。

快速建议:将速率限制与您的流量模式相匹配

速率限制不是一个一刀切的指标。一个在每秒请求数(RPS)上看起来慷慨的提供商,如果您突发超过每秒上限或打开太多 WebSocket 连接,仍然可能限制您的应用。在比较提供商之前,先规划您的工作负载:

  • 读密集型应用(索引器、仪表盘)需要高 RPS,并且访问 getProgramAccounts 或 getSignaturesForAddress 时不应有过于严格的限制。
  • 写密集型应用(交易机器人、NFT 铸造器)需要一致的 sendTransaction 吞吐量和低延迟的确认轮询。
  • 实时应用(订单簿、钱包活动)需要足够的并发 WebSocket 连接和消息吞吐量。

对于大多数生产级 Solana 应用,选择具有透明速率限制和专用基础设施路径的托管提供商是最安全的选择。OnFinality 提供共享和专用 Solana RPC 选项,速率限制可根据您的需求扩展。请参阅 RPC 定价 和 Solana 网络页面 了解当前详情。

Solana RPC 速率限制的典型结构

Solana RPC 提供商通常从三个维度实施限制:

  • 每秒请求数(RPS):每秒最大 JSON-RPC 调用次数。这是最常见的限制,通常按计划分层。
  • 每日/每月请求量:一个计费周期内总请求数的上限。有助于估算成本,但与实时行为关系不大。
  • WebSocket 连接和消息速率:可同时打开的 WebSocket 连接数以及可接收消息的频率。这对于订阅账户或程序更新的应用至关重要。

一些提供商还施加特定于方法的限制——例如,对 getProgramAccounts 或 getSignaturesForAddress 等昂贵调用设置较低的 RPS。这些可能比整体 RPS 上限更具限制性,因此请务必阅读细则。

突发与持续限制

提供商可能允许在声明的 RPS 之上进行短暂突发(例如,持续 10 RPS,突发 20 RPS 持续 5 秒)。突发允许量有助于处理峰值,但并不保证。如果您的应用经常超过持续限制,您将看到 429 错误或请求被丢弃。

跨 Solana RPC 提供商比较什么

评估提供商时,请关注以下标准。使用下表作为起点——然后在每个提供商的网站上验证当前详情。

提供商免费层 RPS付费层 RPSWebSocket 限制专用节点备注
OnFinality中等,公平使用可扩展,透明可配置是共享和专用选项;请参阅 定价
提供商 A低(例如 5 RPS)较高(例如 50 RPS)连接数有限是可能有特定于方法的限制
提供商 B无高(例如 100 RPS)慷慨是通常需要承诺
提供商 C低中等中等否仅专注于共享

注意:该表仅为说明性。请始终查看提供商当前文档以获取确切数字。

要问的关键问题

  • 我需要的计划上的持续 RPS 是多少? 不仅仅是突发速率。
  • 是否有特定于方法的限制? 例如,getProgramAccounts 可能比一般调用限制更低。
  • 我可以打开多少个 WebSocket 连接? 一些提供商限制为 10 或 20 个;其他允许数百个。
  • 当我超过限制时会发生什么? 您会收到 429 错误,还是提供商排队请求?
  • 如果我超出共享限制,我可以升级到专用节点吗? 这对于扩展至关重要。

如何在承诺之前测试速率限制

您可以编写一个简单的脚本探测提供商的速率限制。使用一个循环发送请求并记录 HTTP 状态码。以下是一个使用 fetch 的 Node.js 示例:

const endpoint = 'https://solana.api.onfinality.io/public';
const body = {
  jsonrpc: '2.0',
  id: 1,
  method: 'getHealth',
  params: []
};

async function testRateLimit() {
  let success = 0;
  let rateLimited = 0;
  for (let i = 0; i < 100; i++) {
    try {
      const res = await fetch(endpoint, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(body)
      });
      if (res.status === 429) {
        rateLimited++;
      } else {
        success++;
      }
    } catch (e) {
      console.error('Error:', e);
    }
    await new Promise(r => setTimeout(r, 100)); // 10 RPS
  }
  console.log(`Success: ${success}, Rate limited: ${rateLimited}`);
}

testRateLimit();

针对不同提供商运行此脚本,以查看它们在持续负载下的表现。还要通过打开多个订阅并监控断开连接来测试 WebSocket 连接。

比较速率限制时的常见陷阱

  • 忽略特定于方法的限制:提供商可能宣传 50 RPS,但仅允许 getProgramAccounts 5 RPS。这可能会破坏索引器。
  • 忽视 WebSocket 限制:如果您的应用需要 100 个并发订阅,而提供商限制为 20 个连接,则会导致失败。
  • 假设免费层足以用于生产:免费层用于测试,而非生产。它们通常具有低 RPS 且无 SLA。
  • 不检查突发行为:一些提供商允许短暂突发,但持续负载仍可能触发限制。
  • 忘记归档数据:如果您需要历史状态,请确保提供商提供具有足够速率限制的归档节点。

何时选择专用 Solana 节点

共享 RPC 计划对于中等流量具有成本效益,但它们的限制可能成为瓶颈。在以下情况下考虑专用节点:

  • 您的应用在共享计划上持续达到 RPS 上限。
  • 您需要可预测的性能,用于高频交易或大规模索引。
  • 您需要自定义速率限制或希望避免嘈杂的邻居。
  • 您需要无限制地访问归档数据或专用方法。

OnFinality 提供专用 Solana 节点,让您完全控制速率限制和性能。在 专用节点页面 了解更多。

如何规划速率限制余量

即使使用慷慨的计划,您也应该设计应用以优雅地处理速率限制:

  • 对 429 响应实现指数退避重试。
  • 缓存频繁访问的数据以减少 RPS。
  • 尽可能使用 WebSocket 订阅而不是轮询,但注意连接限制。
  • 监控您的使用情况以检测何时接近限制。

以下是一个简单的 JavaScript 重试模式:

async function rpcCall(method, params, retries = 3) {
  const endpoint = 'https://solana.api.onfinality.io/public';
  for (let i = 0; i < retries; i++) {
    const res = await fetch(endpoint, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params })
    });
    if (res.status === 429) {
      await new Promise(r => setTimeout(r, 1000 * Math.pow(2, i)));
      continue;
    }
    return res.json();
  }
  throw new Error('Rate limited after retries');
}

关键要点

  • Solana RPC 的速率限制是多维的:RPS、每日量和 WebSocket 并发数。
  • 特定于方法的限制可能比整体 RPS 更具限制性。
  • 在承诺之前,使用您的实际工作负载测试提供商。
  • 共享计划适用于中等流量;专用节点提供可预测的性能。
  • 始终通过重试和缓存来设计以应对速率限制错误。

常见问题解答

Solana RPC 提供商的典型免费层 RPS 是多少?

免费层通常在 2 到 10 RPS 之间,但一些提供商可能为测试提供更高的限制。请始终检查当前条款。

我可以在共享计划上获得无限 RPS 吗?

没有提供商在共享计划上提供真正无限的 RPS。专用节点是获得更高、可预测限制的途径。

WebSocket 限制如何影响我的应用?

如果您的应用依赖实时更新,您需要足够的并发 WebSocket 连接。超过限制将导致断开连接或错误。

如果我经常遇到速率限制,该怎么办?

首先,通过缓存和批处理优化您的应用。如果仍然遇到限制,请考虑升级到更高计划或专用节点。

OnFinality 是否提供专用 Solana 节点?

是的,OnFinality 提供专用 Solana 节点。请访问 专用节点页面 了解详情。

RPC 知识库

相关 RPC 内容

RPC 提供商选择Efinity

如何为生产应用选择 Sui 节点提供商

选择 Sui 节点提供商意味着要根据你的具体工作负载平衡吞吐量、可靠性和成本。本指南解释了在选择提供商时需要注意的事项,包括 gRPC 支持、归档数据、故障转移策略,以及如何评估生产级 Sui 应用的选项。...

网络 RPCStellar

什么是 Stellar 节点?如何连接到网络?

Stellar 节点是运行 Stellar 网络的服务器,负责验证交易和维护账本。本文解释了不同的节点类型、如何运行节点,以及如何使用 RPC 端点将您的应用程序连接到网络。...

网络 RPCBase

Base RPC 节点:端点、链设置和调试

Base 是一个基于 OP Stack 构建的以太坊 Layer 2 网络。要与 Base 交互,您需要一个 RPC 端点,让您的应用程序能够读取和写入链上数据。本页涵盖官方 Base RPC 端点、链设置、常见请求模式以及如何调试连接问题。...

网络 RPCBittensor

如何挖掘 Bittensor 并保持矿工连接?

Bittensor 并不像 Bitcoin 那样通过哈希算力挖矿。矿工在子网(subnet)上运行机器学习负载,由验证者(validators)评分,链以 TAO 支付奖励。要开始,你需要选择一个子网、准备硬件、使用 Bittensor CLI 注册矿工,并通过可靠的 RPC 端点保持矿工与 Sub...

RPC 提供商选择Solana

如何为NFT数据API选择Solana RPC提供商

为NFT数据API选择合适的Solana RPC提供商,意味着要在读取密集型工作负载、WebSocket订阅以及可靠的getAsset和getAssets响应之间取得平衡。本指南介绍了需要评估的要素——从速率限制、归档数据到专用节点——以便您将基础设施与您的市场、钱包或分析用例相匹配。...

网络 RPCArbitrum

选择 Arbitrum RPC 提供商时应注意什么?

# 选择 Arbitrum RPC 提供商时应注意什么? Arbitrum RPC 提供商至关重要,因为 Web3 应用程序依赖稳定的端点访问来进行读取、交易、仪表盘和后端工作流。正确的设置应匹配您的工作负载,支持您所需的网络和测试网,使限制可见,并在共享 RPC 不再足够时为您提供扩展路径。 对于...

永远不用担心基础设施

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

开始