🤖 新推出:《Quicknode 》AI 烹饪指南 10个经过验证的AI编程教程agents 。
查看食谱 什么是 RPC 速率限制?Web3 开发者指南 |Quicknode
我们的通讯中包含丰富的免费资源、Quicknode 动态、Web3行业洞察等内容。
CLI、Admin API 、MCP、SDK ,以及支持 75 多个区块链的原生 AI 工具。由开发者打造,专为开发者服务。
涵盖 Python、Ruby 和 JavaScript 的最新代码示例。关于智能合约、NFT 和去中心化应用(dApp)的深入指南。
答案 > 了解 RPC 和 API > 什么是 RPC 速率限制? 简而言之: RPC 速率限制是一种机制,用于限制应用程序在给定时间窗口内向区块链节点发送的请求数量。 当超过限制时,后续请求将被拒绝(通常返回 HTTP 429 错误),直到该时间窗口重置为止。速率限制的存在旨在保护共享基础设施免受滥用,并确保所有用户都能公平地访问。理解和管理速率限制对于构建在高负载下仍能稳定运行的可靠区块链应用程序至关重要。
简明解释 设想一家餐厅的厨房每小时能制作100份餐点。如果50位顾客每人点3道菜,厨房就已达到满负荷。如果有一位顾客试图点50道菜,厨房就不得不拒绝其订单,以确保其他顾客仍能用餐。速率限制的原理与此相同。区块链节点的处理能力是有限的,而速率限制能确保没有任何单个应用程序以牺牲其他使用同一基础设施的用户为代价来垄断该处理能力。
当您的应用程序在短时间内发送了过多的 RPC 请求时,节点会返回错误信息,而不是您请求的数据。在大多数服务提供商处,这会显示为 HTTP 429“请求过多”状态码,通常还会附带一个 JSON-RPC 错误正文,其中会告知您允许的请求数量、您尝试发送的请求数量,以及下次尝试前需要等待多长时间。 如果您的应用程序无视这些信号并继续发送请求,服务提供商可能会暂时封禁您的 IP 地址,甚至完全禁用您的 API 密钥。
速率限制通常以每秒请求数(RPS)、每分钟请求数或两者的组合来表示。 某服务商可能在免费套餐中允许 25 RPS,在成长套餐中允许 300 RPS,而在企业套餐中允许 1,000+ RPS。部分服务商还会设置按方法的限制,这意味着某些计算成本较高的方法(如 debug_traceTransaction 或涉及大范围区块的 eth_getLogs),其单次请求限制会低于 eth_blockNumber 这样的轻量级方法。
为什么会有速率限制
通过 SOC 2 II 类认证 · ISO 27001
速率限制主要有三个目的。首先,它能保障基础设施的稳定性。区块链节点是带状态的系统,负责维护整个区块链的数据,并执行诸如EVM调用和状态查询等复杂操作。如果请求量不受限制地激增,可能会导致节点的CPU、内存、磁盘I/O或网络带宽不堪重负,从而降低所有用户的性能,甚至导致节点完全崩溃。速率限制就像一个断路器,能防止任何单个客户端引发连锁故障。
其次,速率限制可确保资源的公平分配。在共享基础设施上(这是大多数开发者所使用的),成百上千个应用程序共享同一组节点。如果没有速率限制,某个运行着激进索引脚本或配置错误的轮询循环的应用程序,可能会消耗大部分可用容量,导致其他应用程序无法获得所需的资源。速率限制通过执行公平使用政策,确保每个应用程序都能获得合理的资源份额。
第三,速率限制是防范滥用的一种措施。无论是有意的还是无意的,拒绝服务攻击都可能导致许多应用程序所依赖的基础设施瘫痪。速率限制既能防止恶意攻击者将公共端点作为攻击工具,也能防止本着良好意图的开发人员因脚本失控而无意中对某个节点发起分布式拒绝服务攻击。
速率限制如何影响您的应用程序 如果您的应用程序未针对速率限制进行设计,那么在生产环境中就会出现故障。最常见的故障mode 是一种轮询循环,它会过于频繁地查询区块链。一个每 100 毫秒调用一次“eth_blockNumber”来检查是否有新区块的应用程序,仅此一个方法每分钟就会发出 600 次请求。再加上每个活跃用户的余额查询、日志查询和交易状态轮询,即使是最宽松的速率限制,也很容易就被突破。
WebSocket 订阅也可能触发速率限制。虽然初始订阅请求仅计为一次调用,但在某些服务商处,来自服务器的每条传入消息(例如新区块通知或待处理交易提醒)都可能计入您的使用量。如果您的应用程序订阅了跨多个合约的高频事件streams ,传入消息的数量可能会迅速累积。
因速率限制而失败的请求会产生连锁反应。当您的应用未能收到所请求的数据时,可能会重试该请求,从而进一步增加负载。如果重试未采用指数退避机制,就会形成一个反馈循环:受速率限制的请求会产生更多请求,而这些请求又会触发更多的速率限制。这种模式实际上会将您的应用锁定在 RPCendpoint 之外,直到速率限制窗口重置为止。
速率限制管理策略 最有效的策略是减少应用程序需要发出的请求数量。缓存是这种方法的基础。如果您的应用显示 ETH 价格、代币元数据或其他变化缓慢的数据,请将这些结果缓存到本地,并在合理的间隔内刷新,而不是在每次页面加载或用户操作时都向节点发起查询。对于每块都会发生变化的数据,请通过 WebSocket 订阅,而不是通过 HTTP 进行轮询,因为一次订阅即可替代数千次单独的轮询请求。
批量发送请求可以减少 HTTP 开销,并有助于您遵守速率限制。与其为查询 10 个不同的钱包余额分别发起 10 次调用,不如将它们批量打包成一个 JSON-RPC 数组请求。节点会分别处理每个请求,但您只需使用一次 HTTP 请求即可发送所有请求。请注意,某些服务提供商会将批量请求中的每次方法调用都计入您的速率限制,而不仅仅是 HTTP 请求本身。
实现客户端速率限制是一种防御性的最佳实践。与其等待服务器拒绝你的请求,不如监控外发请求的速率,并将可能超过已知限制的请求加入队列或延迟处理。这样可以主动确保应用程序保持在合理范围内,并避免因请求被拒绝而导致的延迟损失。借助 bottleneck(Node.js)或 ratelimit(Python)等库,可以轻松实现这一功能。
根据您的使用情况选择合适的基础设施层级,最终才是最可靠的解决方案。如果您的应用程序频繁触发速率限制,那么它需要的不是更多的优化技巧,而是更大的容量。升级到更高级别或迁移到专用基础设施,可以彻底消除速率限制带来的担忧。
HTTP 429 错误是什么意思? HTTP 429“请求过多”响应意味着您已超过当前时间窗口内的允许请求速率。节点并未故障,您的凭据通常也没有问题;只是您发送请求的速度超出了套餐允许的范围。解决方法是阅读响应内容(其中通常会说明需要等待多长时间),然后在等待该时间后,采用指数退避策略进行重试,以免重复失败导致额外负载堆积。 如果持续收到 429 错误,则应减少请求量或升级至更高容量的套餐,而不是一味地增加重试次数。了解RPC 请求的工作原理 以及RPCendpoint 如何处理调用,有助于理解为何某些方法比其他方法更早达到限制。
如何避免触发 RPC 速率限制? 规避速率限制的主要方法是减少请求数量、降低请求成本,并将请求分散开来。下表总结了影响最大的几种技术,以及每种技术最适合在何种情况下使用。
技术
功能介绍
最适合
缓存
对变化缓慢的数据重复利用结果
价格、元数据、余额
流式传输与轮询
用推送数据取代重复的轮询
按区块更新和索引
批量处理
将多个调用合并为一个请求
批量读取,类似于多次余额查询
客户端速率限制
将请求排入队列,以确保其不超过上限
突发性或用户驱动的流量
更高级别或专用基础设施
提高或取消限制
持续高请求量
从轮询 切换到流式处理 ,通常是减少请求数量最有效的方式。当优化措施不再奏效时,决策就变成了“自建还是采购 ”的问题,即您希望拥有多少处理能力和可靠性。
速率限制和流量控制有什么区别? 这两个术语虽然常被混用,但它们描述的是对过载的不同应对方式。速率限制会设定一个硬性上限:一旦超过该上限,请求就会被直接拒绝,通常返回429状态码。限流则更为温和:系统不会拒绝请求,而是减慢请求处理速度或将其放入队列,这样请求仍能完成,只是速度会变慢。两者都能保护共享基础设施,但从客户端的角度来看,它们的失败方式不同。
方面
速率限制
限流
对过度的回应
拒绝请求
导致请求变慢或排队
典型信号
HTTP 429 错误
延迟增加
对客户的影响
重试失败的呼叫
延迟但已完成的通话
目标
实施严格的使用上限
平滑交通流量峰值
常见问题解答
什么样的RPC速率限制是可接受的? 这取决于您的工作负载和套餐等级。免费套餐通常允许每秒约 25 次请求,而增长版和企业版则可达数百甚至数千次。合适的上限应是在应用缓存、批处理和流式处理后,仍能从容超过您峰值请求率的数值。
遇到 429 响应时该如何处理? 请采用退避策略并重试,而不是频繁轰炸endpoint 。应使用带抖动的指数退避算法,遵守响应中任何“重试间隔”提示,并限制重试次数。如果 429 错误持续出现,请减少请求量或升级容量,而不是更频繁地重试。
批量请求算作一个请求吗? 不一定。虽然批量请求以单个 HTTP 请求的形式发送,但许多服务提供商会将批量请求中的每次方法调用都计入您的速率限制。批量处理虽然能降低网络开销,但并不一定能减少受限调用次数。
流媒体能否规避速率限制? 在很大程度上,是的,这适用于数据采集。基于推送的流会在新区块链数据生成时立即将其传输过来,而无需进行数千次轮询调用,从而消除了大部分原本会触发速率限制的请求量。
为什么某些方法的速率限制更为严格? 像事务追踪或大规模日志查询这类计算开销大的方法,消耗的节点资源远多于获取最新区块号等轻量级调用。服务提供商会对这些高开销调用设置更严格的方法级限制,以保障节点的整体稳定性。
Quicknode 如何处理速率限制 Quicknode 提供了灵活的速率限制控制功能,让开发者能够自主管理其endpoint 的使用情况。除了计划级别的RPS限制外,Quicknode 还提供了方法级别的速率限制,允许您对单个RPC方法设置精确的限制。这对于保护您的endpoint 免受失控脚本或可能过度调用资源消耗大的方法的第三方集成的影响尤为有用。 您可以通过仪表盘 UI 或通过 Console API 以编程方式,针对每个方法分别配置每秒、每分钟或每天的限制。
Quicknode 此外,该服务还提供基于 IP 的速率限制功能,用于控制来自单个 IP 地址的总请求量。当您的endpoint 面向客户端应用程序开放,且您无法完全控制请求量时,此功能尤为有用。Quicknode 仪表板上的实时分析会显示您的方法调用量、响应状态和响应时间,让您全面了解使用模式,从而在问题演变为速率限制问题之前及时发现并解决。
对于需要完全突破速率限制的团队,Quicknode Streams 该方案用基于推送的数据传输模型取代了请求-响应模式。您的应用程序无需每分钟对节点进行数千次轮询,Streams 会在新区块生成时,将区块链数据直接推送至您的 webhook、数据库或数据仓库。这不仅彻底消除了数据摄取工作负载中的 RPC 速率限制,同时还能降低延迟并简化您的后端架构。
延伸阅读 // Publisher
Quicknode
更新于2026年6月2日
2026年2月3日 — 阅读时间10分钟