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

Sui RPC 速率限制:开发者在扩展前应检查什么

摘要

Sui RPC 速率限制是公共和共享端点按 API 密钥、IP 或时间窗口施加的请求上限。它们的存在是为了保持节点对所有人响应迅速,但它们也决定了你的应用在流量高峰、回填和事件密集型工作负载期间能做什么。本文解释了如何在 Sui 上识别速率限制响应,如何测量你的真实请求概况,以及何时共享端点不再适合。它还涵盖了实用选项:请求整形、缓存、批处理,以及当你需要可预测的容量时迁移到专用 Sui 节点基础设施。

快速诊断:你的 Sui 应用真的被限流了吗?

在更换提供商或重写索引器之前,确认限流是真正的原因。Sui RPC 速率限制通常表现为以下信号之一:

  • RPC 端点返回 HTTP 429 Too Many Requests 响应。
  • JSON-RPC 错误对象,消息涉及请求限制、配额或请求过多。
  • 突然的延迟飙升,请求仍然成功但耗时更长。
  • 部分失败:批处理中的某些调用成功,其他被拒绝。
  • 负载下 WebSocket 或订阅断开连接。

如果你只在部署、回填或流量峰值期间看到这些,你几乎肯定遇到了请求上限,而不是节点故障。如果它们在低流量下持续发生,请检查你的 API 密钥、端点 URL,以及你是否意外发送了重复请求。

一个快速的确认方法是记录每次调用的 HTTP 状态和 JSON-RPC 错误体,然后统计每分钟的失败次数。下表将常见症状映射到可能的原因。

症状可能原因首先检查
大多数调用返回 429按密钥或按 IP 的请求上限每秒请求率与你的计划对比
仅重型方法返回 429方法级别或计算加权限制哪些方法主导你的流量
响应缓慢,无错误节点饱和或排队随时间变化的 p95 延迟
订阅断开连接或订阅限制重连逻辑和订阅数量
仅来自一个区域的错误网络路径或区域端点每个部署区域的延迟

一旦你知道看到的是哪种模式,下一步就是决定是减少负载、改变调用 Sui 的方式,还是迁移到容量与你的工作负载匹配的基础设施。

Sui RPC 限制通常如何构成

Sui 暴露了一个 JSON-RPC 接口,大多数提供商在多个层面施加限制。理解这些层面有助于你预测会在哪里碰壁。

按密钥的请求速率。 最常见的限制是与 API 密钥绑定的每秒请求数(RPS)或每分钟请求数(RPM)。公共端点通常按 IP 地址施加此限制,这意味着共享的 NAT 或 CI 运行器可以消耗其背后所有人的预算。

计算加权限制。 并非所有 Sui 方法的成本相同。一个简单的 sui_getLatestCheckpointSequenceNumber 很便宜。返回大量对象集、交易历史或事件流的方法消耗更多节点资源,可能被更重地加权或单独限制。

负载和响应大小上限。 大的 sui_getEvents 或对象查询可能受响应大小或结果数量限制,与请求速率无关。

连接和订阅限制。 WebSocket 连接、活动订阅和并发流通常与 HTTP 请求速率分开限制。

突发与持续限制。 许多提供商允许短暂突发超过稳态速率,然后如果你持续在该水平则进行限流。这对于快速追赶然后空闲的索引器很重要。

因为这些限制因提供商和计划而异,实际方法是测量你自己的流量概况,并将其与端点文档中记录的限制进行比较。如果你的提供商没有明确记录方法级别或订阅限制,在规划容量时将其视为风险。

首先测量你真实的 Sui 请求概况

不知道你实际发送什么,就无法选择正确的修复方法。对你的客户端进行插桩,按方法记录:

  • 峰值和平均每秒调用次数。
  • p50、p95 和 p99 延迟。
  • 按状态码和 JSON-RPC 错误码的错误率。
  • 重试次数以及重试如何放大负载。
  • 并发 WebSocket 订阅数量。

一个小型监控探针可以使这些可见。例如,一个采样轻量级 Sui 方法并记录状态和延迟的 Node.js 脚本:

// monitor-sui.js
const ENDPOINT = process.env.SUI_RPC_URL; // your Sui RPC endpoint

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

setInterval(probe, 1000);

从与你的生产工作负载相同的区域运行此脚本。如果你看到以你未预料到的速率出现 429 响应,你的有效限制低于你的计划所暗示的,或者有其他东西在共享你的密钥。

要从命令行直接进行 JSON-RPC 检查:

curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" \
  -X POST "$SUI_RPC_URL" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"sui_getLatestCheckpointSequenceNumber","params":[]}'

如果你需要一个可用的端点进行测试,请从 Sui RPC 网络页面 开始,并使用那里列出的端点用于你的环境。

在更换提供商之前减少负载

有时最便宜的修复是发送更少、更智能的请求。这些模式在不改变基础设施的情况下减少 Sui RPC 压力:

  • 在 API 支持的地方进行批处理。 JSON-RPC 批处理请求允许你将多个调用合并到一个 HTTP 往返中,这可以减少每个请求的开销,并帮助你保持在请求速率上限之下。
  • 缓存不可变数据。 检查点、最终交易和历史对象不会改变。将它们缓存在本地或 Redis 中,而不是重新获取。
  • 使用订阅而不是轮询。 如果你每秒轮询新的检查点或事件,订阅或调整良好的轮询间隔可以大幅减少请求量。
  • 添加抖动退避。 没有退避的重试会将短暂的限流变成持续的过载。使用带抖动的指数退避和重试预算。
  • 分离读取路径。 将重型分析或回填作业路由到与用户面向应用不同的端点或密钥,这样其中一个工作负载就不会饿死另一个。
  • 精简结果集。 只请求你需要的字段,并对大型查询进行分页,而不是一次性拉取所有内容。

这些更改通常为早期阶段的应用提供足够的余量。它们也使你的流量概况更清晰,这有助于你以后评估专用容量。

当共享 Sui 端点不再适合时

共享和公共端点是合理的起点。当你的工作负载具有以下任何特征时,它们就会成为约束:

  • 持续请求速率接近或超过你的计划上限。
  • 大量使用事件查询、对象查询或历史数据。
  • 许多并发 WebSocket 订阅。
  • 对用户面向交易的严格延迟要求。
  • 多个团队或服务共享一个 API 密钥。
  • 回填和索引器与生产流量竞争。

此时,决策不再是寻找更大的共享计划,而是你是否需要不与其他客户共享的容量。专用 Sui 节点基础设施为你提供一个(或一组)为你的工作负载配置的节点,因此你的吞吐量不受其他租户流量的影响。OnFinality 提供 RPC API 访问和 专用节点 选项,因此你可以从共享开始,并随着请求概况的增长迁移到专用容量。

选项比较:共享 RPC、更高层级 RPC、专用节点

选项最适合主要约束需要验证什么
公共端点原型设计、低流量脚本共享的按 IP 或按密钥上限文档化的限制和稳定性
共享托管 RPC(例如 OnFinality RPC API)具有中等、可预测流量的生产应用计划级别的 RPS/RPM 和方法权重速率限制、方法支持、归档访问
更高层级的共享 RPC具有突发和更重读取模式的应用仍与其他租户共享突发策略、订阅限制
专用 Sui 节点高持续吞吐量、索引器、延迟敏感应用成本更高,需要容量规划节点规格、区域、归档/追踪支持、故障转移

OnFinality 的 RPC API 服务 旨在让团队可以从共享端点开始,并迁移到专用节点,而无需改变集成模式。有关当前计划详情,请参阅 RPC 定价。

Sui RPC 生产就绪检查清单

在扩展 Sui 工作负载之前,使用此检查清单:

  1. 了解每个方法的峰值 RPS。 不仅仅是总请求数,还有哪些方法占主导。
  2. 以书面形式确认你的计划限制。 请求速率、方法权重、负载上限和订阅限制。
  3. 实现退避和重试预算。 永远不要在紧密循环中重试。
  4. 添加回退端点。 第二个提供商或专用节点可降低单点故障风险。
  5. 持续监控错误代码。 对 429 速率发出警报,而不仅仅是总错误。
  6. 分离工作负载。 为索引器和用户面向流量提供不同的密钥或端点。
  7. 测试故障转移。 模拟你的主端点失败,并确认你的应用优雅降级。
  8. 为增长做计划。 估算当前流量 2 倍和 5 倍时的请求量,并检查你的计划是否仍然适合。

如果其中几项对你当前的提供商不明确,那就是评估替代方案的信号。RPC 提供商选择指南 更详细地介绍了这些标准。

看起来像速率限制的常见错误

并非所有失败都是限流。这些问题产生类似的症状:

  • 错误的网络或端点。 将 Sui 客户端指向测试网端点,或反之,会产生看起来像拒绝的错误。
  • 格式错误的 JSON-RPC 负载。 缺少 params 数组或方法名错误会返回错误,而不是速率限制。
  • 过期或轮换的 API 密钥。 无效密钥可能以类似于限流的方式被拒绝。
  • 签名交易中的时钟或 nonce 问题。 交易提交失败通常与请求速率无关。
  • DNS 或 TLS 问题。 间歇性连接错误在负载下可能模仿限流。

在假设速率限制之前,检查 JSON-RPC 错误代码和消息。429 和明确的配额消息指向限流;方法未找到或无效参数错误指向客户端错误。

关键要点

  • Sui RPC 速率限制通常按 API 密钥或 IP 施加,并且通常包括方法级别或计算加权的上限。
  • 429 响应、延迟飙升和订阅断开是限流的主要信号。
  • 在更换提供商之前,按方法测量你的请求概况;重试可以显著放大负载。
  • 批处理、缓存、订阅和退避通常可以解决早期阶段的限流。
  • 当持续吞吐量、大量事件查询或许多订阅超过共享限制时,专用 Sui 节点基础设施是更可预测的选择。
  • OnFinality 提供 Sui RPC API 访问和专用节点;查看 支持的 RPC 网络 和 RPC 定价 了解当前详情。

常见问题

Sui 有内置的 RPC 速率限制吗? Sui 本身是一个网络;速率限制由暴露端点的 RPC 提供商和节点运营商施加。公共端点通常施加按 IP 的限制,而托管提供商施加按密钥的限制,因计划而异。

Sui 速率限制错误是什么样的? 最常见的是 HTTP 429 Too Many Requests 状态,有时带有描述配额或请求限制的 JSON-RPC 错误体。一些提供商返回通用错误消息,因此记录完整响应。

我可以通过使用多个 API 密钥来避免速率限制吗? 有时可以,但请检查你的提供商条款。许多提供商按账户聚合限制,将请求分散到多个密钥可能违反使用政策。更清晰的路径是减少负载或迁移到与你的工作负载匹配的容量。

我什么时候应该迁移到专用 Sui 节点? 当你的持续请求速率接近你的计划上限时,当重型事件或历史查询占主导时,当你运行许多并发订阅时,或者当延迟敏感的流量与批处理作业共享端点时。

OnFinality 提供 Sui RPC 吗? 是的。OnFinality 提供 Sui RPC API 访问和专用节点选项。查看 Sui 网络页面 了解端点详情,查看 RPC 定价 了解计划信息。

如何测试我的应用是否被限流? 从你的生产区域对你的端点运行一个轻量级探针,记录状态码和延迟,并将失败模式与你的请求速率进行比较。如果失败在流量高峰时聚集,限流是可能的原因。

RPC 知识库

相关 RPC 内容

网络 RPCBNB Chain

BNB RPC 列表:你的应用应该连接哪些端点?

只有当你清楚哪种端点类型适合你的工作负载时,BNB RPC 列表才有用。本页将 BNB Smart Chain 端点分为公共、托管和专用三类,然后展示在将任何内容接入生产环境之前所需的链设置、请求格式和故障模式。 你将获得精确的主网和测试网连接详情、一个 curl 和 viem 示例,以及一条简短的...

RPC 提供商选择Optimism

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

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

网络 RPCxx network

什么是 xx network,开发者如何与之交互?

xx network 是一个抗量子、注重隐私的区块链,具有去中心化的混合网络(mixnet)。它基于 Substrate 链,并为开发者提供 RPC 端点。本文解释了该网络的架构、如何通过 RPC 连接,以及在选择基础设施以在 xx 上构建时需要考虑的事项。...

区块链基础设施

加密节点托管:何时租用基础设施而非自行运行

加密节点托管是指在第三方基础设施上运行区块链节点,而非自行托管。本文解释了构建与购买的权衡,帮助您评估托管选项,并提供决策清单,以便在自管理服务器、VPS提供商和OnFinality等托管节点服务之间做出选择。...

测试网 RPCArbitrum

PublicNode Sepolia:它是什么以及何时使用其他端点

PublicNode Sepolia 是一个免费的、共享的 RPC 端点,用于以太坊 Sepolia 测试网。它适用于快速脚本、钱包设置和低流量测试,但共享公共端点并非为 CI 流水线、负载测试或任何需要稳定吞吐量的场景而设计。本文解释了该端点的定义、如何连接,以及何时迁移到托管或专用的 Sepol...

网络 RPCBNB Chain

什么是币安智能链归档节点,何时需要它?

币安智能链(BNB Smart Chain)归档节点保存链的完整历史状态,因此您可以查询任意过去区块高度上的余额、存储槽和合约状态。标准全节点会修剪旧状态,这就是为什么针对它们的历史查询会失败。归档访问对于分析、税务和会计工具、索引器以及任何需要重建特定区块发生情况的后端来说都是必不可少的。您可以通...

永远不用担心基础设施

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

开始