使用Golang Hedera SDK连接测试网遇GoAway错误(too_many_pings)求助
解决Hedera测试网gRPC "too_many_pings" 连接错误
问题分析
该错误是因为gRPC客户端发送ping请求的频率超出了Hedera测试网节点的限制,触发了服务器的限流机制(ENHANCE_YOUR_CALM是gRPC的限流错误码)。即便只创建了一个客户端连接,SDK默认的ping参数可能不符合Hedera节点的约束规则。
解决方案
1. 调整gRPC Ping参数
通过客户端配置方法修改ping间隔与连接空闲超时,降低ping请求的发送频率:
import "time" // 创建测试网客户端 hederaClient := hederaSdk.ClientForTestnet() // 设置连接空闲超时为5分钟,避免连接过早被标记为空闲状态 hederaClient.SetGrpcConnectionIdleTimeout(5 * time.Minute) // 设置ping间隔为30秒,控制ping发送频率(建议不低于30秒) hederaClient.SetGrpcPingInterval(30 * time.Second) // 设置Operator信息 hederaClient.SetOperator(cfg.Hedera.OperatorID, cfg.Hedera.OperatorKey)
2. 升级Hedera Go SDK
你当前使用的v2.24.3版本可能存在默认ping参数不合理的问题,建议升级到v2.25.x及以上的稳定版本——官方后续版本优化了gRPC连接的默认配置,能有效减少这类限流触发概率。
3. 确认客户端实例唯一性
检查代码逻辑,确保没有在循环、多协程或其他场景下重复创建hederaClient实例。多个独立客户端会建立多条连接,叠加的ping请求频率更容易触发节点限流。
4. 禁用自动Ping(临时排查手段,不推荐)
如果上述方法无效,可临时禁用自动ping,但此操作可能导致连接被服务器主动断开,仅用于排查问题:
hederaClient.SetDisableAutomaticPings(true)
内容的提问来源于stack exchange,提问作者CivilizedCrab
相关产品推荐
相关产品推荐

