【问题标题】:What is the maximum number of bytes that can be specified in grpc.MaxCallSendMsgSize?可以在 grpc.MaxCallSendMsgSize 中指定的最大字节数是多少?
【发布时间】:2023-03-31 19:56:02
【问题描述】:

问题:

我在 grpc 中接收消息时收到此错误:

grpc: received message larger than max (11509754 vs. 4194304)

我尝试了什么:

我提供了增加要发送的消息大小的选项,但它仍然给出了同样的错误,这意味着这个最大大小的设置不起作用:

maxSizeOption := grpc.MaxCallSendMsgSize(50 * 1024 * 1024)
if _, err := grpcClient.Foo(request, maxSizeOption); err != nil {
    return err
}

评论:

我不明白为什么错误消息显示 4194304(=4MB)。 grpc.MaxCallSendMsgSize 是否有最大字节数可以设置?

补充一点,当我将 10MB 传递给 MaxCallSendMsgSize 时,我得到了错误:

trying to send message larger than max (11509754 vs. 10485760)

这是意料之中的。

附录:

当我将 10MB 传递给 MaxCallSendMsgSize 和 MaxCallRecvMsgSize 时,我得到了同样的错误:

size := 50* 1024 * 1024
maxSendSizeOption := grpc.MaxCallSendMsgSize(size)
maxRecvSizeOption := grpc.MaxCallRecvMsgSize(size)
if _, err := grpcClient.Foo(request,maxSendSizeOption,maxRecvSizeOption); err != nil {
   return err
}

错误:

grpc: received message larger than max (11509754 vs. 4194304)

【问题讨论】:

  • 第一个错误来自接收,但您正在设置最大发送大小。
  • 我更新了我的帖子。当我将 10MB 传递给 MaxCallSendMsgSize 和 MaxCallRecvMsgSize 时,我得到了同样的错误。
  • 您必须在客户端和服务器端设置这些选项。
  • 感谢 JimB 和Зелёный!我也设置了这些选项服务器,它可以工作。

标签: go grpc grpc-go


【解决方案1】:

我也设置了这些选项服务器,并且它起作用了。 感谢 JimB 和 Зелёный!

// server side
size := 1024 * 1024 * 50
server := grpc.NewServer(
    grpc.MaxSendMsgSize(size),
    grpc.MaxRecvMsgSize(size),
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多