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

顶级 Solana RPC 提供商的速率限制选项如何比较?

摘要

Solana RPC 提供商在实施速率限制方面有所不同:有些按 IP 限制每秒请求数,有些按计算单元或积分计量,高级套餐提供更高吞吐量或专用节点。本文比较了主要提供商的速率限制模型,并帮助您为工作负载选择合适的方案。

快速建议:将速率限制与您的工作负载匹配

在比较提供商之前,先确定您的应用实际需要什么。轻量级 NFT 行情器可以在共享 RPC 上运行,只需适度的请求上限。高频交易机器人或重放历史数据的 Solana 索引器会很快耗尽共享限制,可能需要专用节点或基于计算单元计量的套餐。

问三个问题:

  1. 您的请求模式是什么? 对 getLatestBlockhash 或 sendTransaction 的突发调用需要高于平均 RPS 的余量。
  2. 您是否使用 WebSocket 订阅? 许多提供商单独计算每个订阅,并限制并发连接数。
  3. 您是否需要历史数据? 像 getSignaturesForAddress 和 getTransaction 这样的方法开销较大;提供商可能会更严格地计量它们。

如果您预期持续负载或需要可预测的性能,请尽早评估专用节点选项。OnFinality 提供具有隔离容量的 专用 Solana 节点,其 RPC 定价 页面列出了共享和专用套餐。有关提供商选择标准的更广泛视图,请参阅 如何选择 RPC 提供商。

为什么速率限制在 Solana 上很重要

Solana 专为高吞吐量而设计,但该吞吐量取决于您使用的 RPC 端点。单个共享端点可能被少数重度消费者淹没,从而降低每个人的延迟。速率限制保护提供商的基础设施并确保公平使用,但它们也直接影响您应用程序的可靠性。

与以太坊(通常采用简单的每秒请求数上限)不同,Solana RPC 提供商通常使用更细粒度的计量。有些对每个 JSON-RPC 调用一视同仁,而另一些则根据计算负载为每个方法分配成本。这意味着允许 100 RPS 的套餐如果您发送许多 getTransaction 请求(远比 getSlot 昂贵),仍然可能限制您。

Solana RPC 提供商使用的速率限制模型

提供商通常分为三类:

1. 每秒请求数(RPS)上限

最简单的模型:您被允许每秒固定数量的请求,通常按 IP 地址计算。免费套餐可能允许 10-50 RPS,而付费套餐可扩展到数百或数千。此模型易于理解,但对于成本差异很大的方法可能不公平。

2. 计算单元或基于积分的计量

一些提供商为每个 RPC 方法分配成本,类似于 Solana 自身的计算限制。简单的 getHealth 调用可能花费 1 个积分,而响应较大的 getTransaction 可能花费 10 或更多。您的套餐包含每月积分配额,当您用完时会受到限制。此模型将定价与实际服务器负载对齐,但要求您更仔细地估算使用量。

3. WebSocket 的并发连接限制

WebSocket 订阅对于实时更新至关重要,但它们保持持久连接。提供商通常限制并发 WebSocket 连接数,有些还限制每个连接的订阅数。如果您需要监控许多账户,此限制可能成为瓶颈。

比较顶级 Solana RPC 提供商

下表总结了主要提供商的速率限制方法。请始终查看提供商的最新文档,因为套餐经常变化。

提供商速率限制模型免费套餐WebSocket 限制专用选项
OnFinality基于 RPS 的分层套餐是是,按套餐是,隔离节点
提供商 ARPS + 计算单元是是,较低上限是
提供商 B基于积分是是,按订阅是
提供商 C仅 RPS否否否

OnFinality 提供具有明确 RPS 限制的共享 RPC 端点,以及完全消除共享节流的专用节点。其 Solana 网络页面 列出了用于测试的公共端点和 WebSocket URL。

提供商 A 使用混合模型:基本 RPS 上限加上对昂贵方法的计算单元计量。这对轻度用户来说可能具有成本效益,但如果您依赖 getSignaturesForAddress,可能会让您感到意外。

提供商 B 因其积分系统而广受欢迎,该系统为您提供每月配额。对于稳定的工作负载,它是可预测的,但对于突发流量可能难以调整。

提供商 C 仅提供简单的 RPS 上限,并且缺乏 WebSocket 支持,使其不适合实时应用程序。

如何评估适合您用例的速率限制

在比较套餐时,请超越表面的 RPS 数字。考虑:

  • 方法成本:提供商是否更严格地计量 getTransaction 或 getSignaturesForAddress?如果是,请将其纳入容量规划。
  • 突发余量:一些提供商允许高于平均 RPS 的短突发,而另一些则在上限处硬性节流。如果您的应用有峰值,突发余量很有价值。
  • 基于 IP 与基于密钥的限制:如果您运行多个后端服务器,基于 IP 的限制可能有问题。与 API 密钥关联的基于密钥的限制更易于管理。
  • WebSocket 订阅上限:计算您需要并发订阅的数量,并验证提供商支持该数量。
  • 存档数据访问:如果您需要历史数据,请检查提供商是否提供存档节点,以及这些请求是否计入相同的限制。

在承诺之前测试速率限制

您可以使用简单的脚本测量提供商的速率限制行为。以下示例发送一批 getSlot 请求,并报告在达到限制之前有多少成功。

for i in $(seq 1 200); do
  curl -s -o /dev/null -w "%{http_code}\n" \
    -X POST https://solana.api.onfinality.io/public \
    -H "Content-Type: application/json" \
    -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'
done | sort | uniq -c

如果您看到 HTTP 429 响应,则您已触发速率限制。确切阈值将取决于提供商和套餐。对于生产测试,请使用您的 API 密钥和真实的方法组合。

WebSocket 速率限制及其处理方法

WebSocket 连接通常与 HTTP 请求分开限制。常见限制是每个 API 密钥 10-50 个并发连接。如果您需要更多,可能需要专用节点。

为了减少连接数,您可以使用带有过滤器的单个订阅,而不是单独订阅每个账户。例如,使用 programSubscribe 监控程序的所有账户,而不是订阅每个地址。

以下是一个 Node.js 片段,它打开到 OnFinality 公共端点的 WebSocket 连接并订阅时隙更新:

const WebSocket = require('ws');

const ws = new WebSocket('wss://solana.api.onfinality.io/public-ws');

ws.on('open', () => {
  ws.send(JSON.stringify({
    jsonrpc: '2.0',
    id: 1,
    method: 'slotSubscribe'
  }));
});

ws.on('message', (data) => {
  console.log(data.toString());
});

请记住,每个订阅都会消耗连接限制中的一个槽位。监控您的使用情况以避免意外断开。

何时选择专用 Solana 节点

共享 RPC 端点对于开发和低流量应用程序具有成本效益,但它们有固有限制。如果您遇到以下任何情况,请考虑专用节点:

  • 您经常遇到 HTTP 429 或 WebSocket 断开。
  • 您的应用程序需要一致的低延迟,例如交易或游戏。
  • 您需要运行重型分析或索引大量历史数据。
  • 您希望避免可能降低共享端点性能的嘈杂邻居。

OnFinality 的 专用节点服务 提供具有专用资源的 Solana 节点,让您完全控制速率限制和性能。您还可以使用它访问存档数据或运行自定义配置。

常见速率限制错误及其调试方法

当您超过速率限制时,通常会看到以下响应之一:

  • HTTP 429 Too Many Requests:提供商正在限制您的请求。检查您当前的使用情况与套餐限制。
  • JSON-RPC 错误 -32005:这是 Solana 特定的错误,表示您已超过节点的速率限制。它通常包含 retryAfter 字段。
  • WebSocket 关闭代码 1008:服务器因策略违规而关闭连接,通常是因为您超过了订阅限制。

要调试,请在 RPC 客户端中添加日志记录以捕获响应头和错误代码。许多提供商包含诸如 x-ratelimit-remaining 之类的头,帮助您跟踪使用情况。

关键要点

  • 速率限制模型各不相同:RPS 上限、计算单元计量和 WebSocket 连接限制是最常见的。
  • 将提供商的模型与您的工作负载匹配:突发型应用需要余量,重型分析需要存档访问,实时应用需要 WebSocket 容量。
  • 在承诺套餐之前,始终使用真实的请求组合测试速率限制。
  • 专用节点消除共享节流,并为要求苛刻的应用程序提供可预测的性能。
  • 查看每个提供商的最新文档,因为限制和定价经常变化。

常见问题解答

Solana RPC 提供商的典型免费套餐速率限制是多少?

免费套餐通常允许每秒 10 到 50 个请求,WebSocket 连接限制较低。一些提供商还限制每日请求数。这些限制足以用于开发和轻度测试,但不适用于生产流量。

如何知道我是否需要专用 Solana 节点?

如果您持续达到速率限制,需要低延迟用于时间敏感的应用程序,或需要存档数据访问,那么专用节点值得投资。它提供隔离资源并消除共享端点的可变性。

我可以在多台服务器上使用同一个 API 密钥吗?

大多数提供商允许这样做,但速率限制可能按 IP 地址或按密钥应用。如果您有多台服务器,请检查提供商是汇总使用量还是按 IP 应用限制。在分布式设置中,基于密钥的限制更易于管理。

WebSocket 订阅是否与 HTTP 请求计入相同的速率限制?

通常不会。提供商通常对 WebSocket 连接和订阅有单独的限制。您应该监控两者以避免意外节流。

如何监控我的 RPC 使用情况?

许多提供商提供仪表板,您可以在其中查看请求计数、错误率和当前限制。您还可以添加客户端日志记录以跟踪响应代码和头。对于全面的方法,请考虑使用监控服务来跟踪 RPC 健康和延迟。

有关 Solana RPC 端点和套餐的更多详细信息,请访问 Solana 网络页面 和 RPC 定价页面。

RPC 知识库

相关 RPC 内容

网络 RPCMetis

Metis API:链设置、RPC 方法和提供商选择

Metis API 是指 Metis Andromeda 第二层区块链的 JSON-RPC 接口,这是一个兼容以太坊的 Rollup。本文涵盖链配置、基本 RPC 方法、如何连接钱包和 dApp,以及为生产工作负载选择可靠 RPC 提供商的标准。...

RPC 提供商选择Optimism

哪个RPC提供商提供最可靠的Optimism RPC端点?

# 哪个RPC提供商提供最可靠的Optimism RPC端点? 最可靠的Optimism RPC提供商是能够为您的团队提供稳定的认证端点、明确的使用限制、生产请求分析、支持的WebSocket和HTTP访问、响应迅速的支持,以及在共享RPC容量不足时提供升级路径的提供商。对于在Optimism上构建...

网络 RPCBittensor

什么是 Bittensor RPC,如何连接?

# 什么是 Bittensor RPC,如何连接? Bittensor 是一个去中心化的人工智能网络,构建在基于 Substrate 的第一层链(Subtensor)之上,并可选配 Frontier EVM 运行时。要与网络交互——无论是查询子网状态、提交推理请求,还是部署智能合约——你都需要一个 ...

区块链基础设施Polkadot

Polkadot 验证者:自建 vs. 购买 – 运行节点 vs. 使用 RPC 提供商

Polkadot 验证者通过质押 DOT、验证平行链区块并参与共识来保护中继链。运行验证者需要大量的硬件、管理和质押保证金。对于许多开发者和 dApp 运营者而言,使用托管的 RPC 提供商可以消除运营负担,同时间接支持网络。...

区块链基础设施Bittensor

在 Bittensor 上挖矿 TAO:如何保持矿工注册并获得奖励?

在 Bittensor 上挖矿 TAO 不是工作量证明哈希。你在子网上注册一个热键,运行一个矿工来产生该子网奖励的任务,并保持链连接足够健康以设置权重、领取排放,并在被注销时重新注册。这个循环的链上部分是大多数矿工亏损的地方:在设置权重或注册期间 RPC 连接断开可能会让你损失整个 tempo 的排...

网络 RPCUnichain

什么是 Unichain RPC 端点,如何使用它?

Unichain 是基于 OP Stack 构建的以太坊 L2,其 RPC API 遵循标准的以太坊 JSON-RPC。主网链 ID 为 130,网络使用 ETH 作为原生货币。您可以先使用公共端点(如 https://unichain.api.onfinality.io/public)进行测试,然...

永远不用担心基础设施

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

开始