grpc 4MB 的限制

当遇到 received message larger than max (83886080 vs. 4194304) 错误的时候,一定要仔细分析,看是哪一段超过了限制,对于我们自己的代码例子来说:



client 发送请求是 Empty,因此肯定不会超过 math.MaxInt32 的限制
server recv Empty,不会超过 defaultServerMaxReceiveMessageSize(4MB) 的限制
server send stream StringMessage,每一个 StringMessage 为 83886080 Bytes,依然没有超过 math.MaxInt32 的限制
client recv stream StringMessage 时,StringMessage 为 83886080 Bytes 超过了 4MB 的限制,因此报错
因此,需要修改的是 client recv 的 limit:



conn, err := grpc.Dial(“unix:///var/lib/test.socket”, grpc.WithInsecure(), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(100000000)))




https://www.cnblogs.com/oolo/p/11840305.html
客户端报错



// 增加调用选项 grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(recvSize)))
grpc.Dial(host, grpc.WithInsecure(), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(recvSize)))
服务端报错



// 其实也一样, 设置一下发送 接收的大小
var options = []grpc.ServerOption{
grpc.MaxRecvMsgSize(recvSize),
grpc.MaxSendMsgSize(sendSize),
}
s := grpc.NewServer(options…)



https://blog.csdn.net/halo_hsuh/article/details/107603923



Category golang