gRPC(grpc-js)出现RST_STREAM code 0替代INTERNAL错误求助
gRPC客户端收到RST_STREAM code 0而非预期INTERNAL错误的问题解决
问题现象
使用gRPC进行服务调用时,偶尔出现客户端收到RST_STREAM code 0错误,而非服务端预期返回的INTERNAL错误。该问题仅在服务端部署于GCP Cloud Run时出现,本地测试完全正常。
环境信息
- gRPC库版本:
@grpc/grpc-js1.8.11(客户端、服务端统一使用) - NodeJS版本:16.18.0
- 服务部署环境:GCP Cloud Run
排查细节
- 服务端日志明确记录已正常返回
INTERNAL错误 - 客户端触发异常时,日志中无
Received server trailers记录,说明未接收到服务端返回的完整错误元数据 - 本地环境下客户端可稳定收到预期的
INTERNAL错误,无异常
原因分析
社区贡献者推测,该异常由Cloud Run的代理层导致:代理在转发服务端响应过程中提前终止了HTTP/2流,使得客户端无法获取到完整的错误trailers,最终触发RST_STREAM code 0错误。
解决方案
该问题已通过社区提供的针对性配置优化方案解决,具体调整可参考相关社区讨论中的对应方案。
内容的提问来源于stack exchange,提问作者Nick Kuznecov
相关产品推荐
相关产品推荐

