You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solana RPC与WebSocket调用限制及并发提升方案咨询

Solana RPC并发调用限流问题解决方案

问题描述

使用solana-go库调用SendAndConfirmTransaction接口时,并发100次会触发429限流错误;将并发量降至50次时单次调用可行,但重复执行仍会触发限流。

代码示例

_, err = confirm.SendAndConfirmTransaction(
  context.TODO(),
  this.getRpcClient(),
  this.wsClient,
  tx,
)
if err != nil {
  panic(err)
}

报错信息

panic: (*jsonrpc.RPCError)(0x140001a1800)({
 Code: (int) 429,
 Message: (string) (len=83) "Connection rate limits exceeded, contact your app developer or support@rpcpool.com.",
 Data: (interface {}) <nil>
})

Solana RPC与WebSocket限制规则

  • 公共节点通用限制:免费/公共RPC节点(如rpcpool)会基于以下维度管控流量:
    • 并发连接数:WebSocket连接存在上限,SendAndConfirmTransaction会同时占用RPC请求和WS监听通道,并发时资源消耗翻倍
    • 请求频率:单位时间内(分钟/秒级)的请求总数有阈值,重复连续请求容易触发
    • 单IP管控:基于请求来源IP设置流量配额,单IP持续请求很快会触达上限
  • 接口额外消耗:SendAndConfirmTransaction并非单一请求,而是先提交交易到RPC,再通过WebSocket监听确认状态,一次调用占用两个资源通道,比单纯提交交易更容易触发限流

提升并发调用量的可行方法

  • 切换付费RPC服务:付费节点(如QuickNode、Ankr的Solana专属节点)提供更高的速率配额、更大的并发连接数,还能获得专属技术支持,从根源上解决限流问题
  • 实现限流与重试逻辑:
    • 用令牌桶/漏桶算法控制并发请求数,将并发稳定控制在40以内(低于50的安全阈值)
    • 添加指数退避重试,遇到429错误时自动重试,示例代码如下:
      import "github.com/cenkalti/backoff/v4"
      
      err = backoff.Retry(func() error {
          _, err := confirm.SendAndConfirmTransaction(
              context.TODO(),
              this.getRpcClient(),
              this.wsClient,
              tx,
          )
          if err != nil {
              if rpcErr, ok := err.(*jsonrpc.RPCError); ok && rpcErr.Code == 429 {
                  return err
              }
              return backoff.Permanent(err)
          }
          return nil
      }, backoff.NewExponentialBackOff())
      if err != nil {
          panic(err)
      }
      
  • 复用客户端连接:确保RPC和WebSocket客户端全局复用,不要每次请求创建新实例,避免额外的连接开销触发限流
  • 批量交易优化:如果业务允许,将多个交易合并为批量提交(注意Solana单批量交易的大小限制,最大为1232字节),减少请求总数
  • 分散请求来源:通过多IP地址分散请求,避免单IP的流量阈值被触发,需注意服务商的合规条款

内容的提问来源于stack exchange,提问作者Javin Yang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:45:34