Skip to content

附录B:gRPC 错误排查指南 ​

protoc 命令错误 ​

错误原因解决
protoc-gen-go: program not found插件不在 PATHexport PATH=$PATH:$(go env GOPATH)/bin
File not foundproto 路径不对用 -I 或 --proto_path 指定
go_package 不匹配module 和 go_package 不统一检查 go.mod 的 module 名

连接错误 ​

错误原因解决
Unavailable / connection refusedServer 没启动检查端口和启动命令
DeadlineExceeded超时调大超时或检查 Server 性能
TLS handshake error证书问题开发环境用 insecure

代码生成错误 ​

错误原因解决
编译报错:接口未实现忘记嵌入 UnimplementedXXX嵌入 pb.UnimplementedXXXServer
生成的文件找不到go_package 路径不对检查 go.mod + go_package

流式错误 ​

错误原因解决
服务端流收不到数据Client 没循环 Recv用 for { Recv() }
客户端流 Server 没响应Client 没调 CloseAndRecvSend 完后必须 CloseAndRecv
双向流死锁收发顺序问题Client 用 goroutine 分离收发

拦截器错误 ​

错误原因解决
拦截器不生效一元和流式拦截器分开注册分别注册 UnaryInterceptor 和 StreamInterceptor
Metadata 取不到key 大小写gRPC Metadata key 统一为小写

把零散知识,整理成可以反复走的路。