【问题标题】:Kafka InvalidReceiveException Invalid receiveKafka InvalidReceiveException 无效接收
【发布时间】:2019-02-02 01:40:57
【问题描述】:

我们在测试和生产中得到了这个。 它是连续的,我们不知道这些错误是如何每隔几秒钟就出现的,至少我们似乎没有来自另一个正在测试的系统的提要。

我们的消息非常小,最多只有几百个字节。

这是 1.2 GB。我尝试将:socket.request.max.bytes 设置为 1195725856,但随后内存不足,即使堆大小约为 2.5 GB 并且 OpenShift 容器设置为最大 32GB。

非常欢迎任何帮助!

org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600)
    at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:132)
    at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:93)
    at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:235)
    at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:196)
    at org.apache.kafka.common.network.Selector.attemptRead(Selector.java:545)
    at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:483)
    at org.apache.kafka.common.network.Selector.poll(Selector.java:412)
    at kafka.network.Processor.poll(SocketServer.scala:551)
    at kafka.network.Processor.run(SocketServer.scala:468)
at java.lang.Thread.run(Thread.java:748)

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    通过移除弹簧解决了这个问题。卡夫卡。 Ssl。生产者的协议属性。
    当 kakfka 经纪人不支持 Ssl 但生产者支持时,这个问题就来了。它与大小无关。因为生产者发送超过 100 mbs 的消息的可能性非常低。

    我花了将近 90 分钟来解决这个 SSL 问题,因为我在配置 bean 中有一个自定义的 kafka 生产者。

    【讨论】:

    • 我不知道为什么,但这有效
    【解决方案2】:

    听起来像是一个不匹配的协议问题;也许您正在尝试连接到非 SSL 侦听器。 如果您使用端口的默认代理,则需要验证 :9092 是该代理上的 SSL 侦听器端口。

    例如,

    listeners=SSL://:9092
    advertised.listeners=SSL://:9092
    inter.broker.listener.name=SSL
    

    应该为您解决问题(确保在重新配置这些属性后重新启动 Kafka)。

    或者,您可能正在尝试接收一个太大的请求。最大大小是socket.request.max.bytes 的默认大小,即 100MB。因此,如果您有大于 100MB 的消息,请尝试增加 server.properties 下的此变量的值。

    【讨论】:

    • 感谢您的快速回复,我们找到了问题所在。已发布答案。
    【解决方案3】:

    在 Openshift 中将 Kafka 端口用于“Liveness probe”是我们的错。 CURL 是 Http 客户端,Kafka 使用 TCP。

    将改用 NetCat。

    【讨论】:

    • 我在这里遇到了同样的问题。你是如何解决这个问题的? Netcat 在上面产生了同样的错误。
    • 我们使用了 python。手头没有脚本,但使用 TCP。
    【解决方案4】:

    在本地安装 Zookeeper 和 Kafka 时遇到同样的错误

    通过增加#KAFKA_HOME\config\server.properties 得到解决

    -- Dafult value - 104857600
    # The maximum size of a request that the socket server will accept (protection against OOM)
    socket.request.max.bytes=500000000
    

    【讨论】:

      【解决方案5】:

      我为 "InvalidReceiveException: InvalidReceive (size = 1195725856 greater than 104857600)" 苦苦挣扎了将近一整天,直到最后我在调试模式下运行测试并几乎逐行运行-线。对我来说,事实证明我已经将一些 kafka env 变量值(在本例中为 KAFKA_KEY 和 KAFKA_SECRET)放入我的 .zshrc 以与 kafkacat 一起使用。我几乎不知道我的 docker 容器也在获取这些值并尝试将它们与我的开发环境一起使用,这导致它出现类似于上述 SSL 与非 SSL 协议不匹配的问题。所以我只是重命名了 .zshrc 中的变量,之后一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-15
        • 1970-01-01
        • 2018-02-05
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 1970-01-01
        • 2020-05-29
        相关资源
        最近更新 更多