获取"org.apache.kafka.common.network.InvalidReceiveException:无效接收(大小= 1195725856大于104857600)"

Sid*_*tha 18 apache-kafka

我已经安装了zookeeper和kafka,第一步:通过以下命令运行zookeeper:

bin/zkServer.sh start
bin/zkCli.sh
Run Code Online (Sandbox Code Playgroud)

第二步:运行kafka服务器

bin/kafka-server-start.sh config/server.properties
Run Code Online (Sandbox Code Playgroud)

kafka应该在localhost:9092运行

但我收到以下错误:

WARN Unexpected error from /0:0:0:0:0:0:0:1; closing connection (org.apache.kafka.common.network.Selector)
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600)
Run Code Online (Sandbox Code Playgroud)

我关注以下链接: Link1 Link2

我是kafka的新手,请帮我设置一下.

Chr*_*own 23

1195725856 被GET[space]编码为大端、四字节整数(有关其工作原理的更多信息,请参见此处)。这表明 HTTP 流量正在发送到 Kafka 端口 9092,但 Kafka 不接受 HTTP 流量,它只接受自己的协议(将前四个字节作为接收大小,因此出现错误)。

由于错误是在启动时收到的,它可能是良性的,并且可能表明您的网络扫描端口上存在使用 Kafka 不理解的协议的扫描服务或类似服务。

为了找到原因,您可以使用 tcpdump 找到 HTTP 流量的来源:

tcpdump -i any -w trap.pcap dst port 9092
# ...wait for logs to appear again, then ^C...
tcpdump -qX -r trap.pcap | less +/HEAD
Run Code Online (Sandbox Code Playgroud)

总的来说,这可能很烦人但无害。至少 Kafka 实际上并没有分配/弄脏内存。:-)

  • 这正是我的情况。当 Prometheus 配置为在 Kafka 端口(默认为 9092)上抓取数据但应在 JMX 导出器端口(默认为 8080)上抓取数据时,可能会发生此错误 (2认同)

Nik*_*aki 11

尝试将文件中的socket.request.max.bytes值重置$KAFKA_HOME/config/server.properties为超过数据包大小,然后重新启动kafka服务器.

  • 但是启动 kafka 时如何出错呢?它说收到的消息大于设定的大小。但是我们还没有完全启动kafka开始接收。我错过了什么吗? (5认同)

Gio*_*ous 9

我最初的猜测是您可能试图接收过大的请求。最大大小是 的默认大小socket.request.max.bytes,即 100MB。因此,如果您有一条大于 100MB 的消息,请尝试增加此变量的值,server.properties并确保在再次尝试之前重新启动集群。


如果上述方法不起作用,那么很可能您正在尝试连接到非 SSL 侦听器。如果您使用的是端口的默认代理,则需要验证 :9092 是该代理上的 SSL 侦听器端口。

例如,

listeners=SSL://:9092
advertised.listeners=SSL://:9092
inter.broker.listener.name=SSL
Run Code Online (Sandbox Code Playgroud)

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

  • 但是启动 kafka 时如何出错呢?它说收到的消息大于设定的大小。但是我们还没有完全启动kafka开始接收。我错过了什么吗?我们还得到了“(size = 1195725856 大于 104857600)”。接收到的大小为 1195725856 B = 1.1 GB。将“socket.request.max.bytes”增加到 2GB 会产生“java.lang.OutOfMemoryError”。我应该设置 `KAFKA_HEAP_OPTS="-Xms512m -Xmx2g`。注意 `-Xmx2g`。我们是如何指定 2GB 最大 java 堆大小的? (2认同)