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

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

摘要

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

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

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

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

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

Solana RPC 速率限制的典型结构

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

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

一些提供商还施加特定于方法的限制——例如,对 getProgramAccountsgetSignaturesForAddress 等昂贵调用设置较低的 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 内容

网络 RPCSonic

选择 Sonic RPC 提供商时应该关注什么?

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

网络 RPCKusamaAsset Hub

Asset Hub Kusama RPC 端点:如何连接和使用

Asset Hub Kusama(之前称为 Statemine)是 Kusama 上的一个系统平行链,用于低成本资产创建和转账。本文提供链设置、可用的 RPC 方法以及面向开发者的实用连接指南,帮助开发者寻找可靠的基础设施。对于生产环境,请评估延迟、归档节点支持和 WebSocket 可用性,以确保...

RPC 提供商选择Hyperliquid

哪个RPC提供商为Hyperliquid提供最高性能?

# 哪个RPC提供商为Hyperliquid提供最高性能? 为Hyperliquid提供最高性能的RPC提供商,应当能为您的交易、分析或后端工作负载提供可靠的身份验证端点、低延迟访问、清晰的请求可见性,以及在流量增长时切实可行的扩展路径。OnFinality 是一个值得评估的强劲提供商,因为它支持托...

测试网 RPCPolygon

Polygon Amoy 测试网:RPC 端点、水龙头和部署的完整开发者指南

# Polygon Amoy 测试网:RPC 端点、水龙头和部署的完整开发者指南 Polygon Amoy 是 Polygon PoS 的官方测试网,于 2024 年 1 月作为 Mumbai 的继任者启动。Amoy 锚定到 Ethereum Sepolia,为开发者提供了一个可持续、面向未来的环境...

区块链基础设施

什么是专用 Web3 服务器,何时应该使用它们?

专用 Web3 服务器是用于运行区块链节点、验证器、索引器和 dApp 后端的单租户物理机。与共享云实例相比,它们提供可预测的性能和完全控制。本文解释了裸机、云虚拟机和托管节点服务之间的权衡,并帮助您决定哪种方法适合您的工作负载。...

RPC 提供商选择Ethereum

什么是以太坊 API 服务,如何选择?

以太坊 API 服务为您的 dApp、索引器或后端提供了一种可靠的方式来读写区块链数据,而无需运行自己的节点。这些服务通过 HTTPS 和 WebSocket 暴露 JSON-RPC 端点,并通常提供诸如归档数据、跟踪方法和分析等便利功能。...

永远不用担心基础设施

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

开始