socket.request.max.bytes=104857600
,配置了这个,但是报错是这个
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 218762506 larger than 524288)
为什么是524288
报错信息
org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 218762506 larger than 524288)
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.security.authenticator.SaslServerAuthenticator.authenticate(SaslServerAuthenticator.java:257)
at org.apache.kafka.common.network.KafkaChannel.prepare(KafkaChannel.java:81)
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:486)
at org.apache.kafka.common.network.Selector.poll(Selector.java:424)
at kafka.network.Processor.poll(SocketServer.scala:628)
at kafka.network.Processor.run(SocketServer.scala:545)
at java.lang.Thread.run(Thread.java:748)
我又回看了这个问题,调整
是没错的,同时也要调大jvm(因为接收数据量变大了,jvm也必须调大,否则会oom):
kafka启动脚本kafka-server-start.sh中指定了kafka启动时需要的最小内存,默认为1G
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
修改脚本
kafka-server-start.sh
中的启动内存。最后,我依然是觉得参数没有生效,kafka必须依次重启才能生效。
能解释下接受数量变大的根本原因吗 是因为消费的速度跟不上导致的吗
不是消费者的,是生产者发给kafka的数据大小和数据量增加了导致超过了默认值。
kafka默认一次socket请求最多处理100MB数据。
好的 谢谢 那怎么抓取发给kakfa的数据大小呢
通过监控:kafka监控
我理解是broker配置socket.request.max.bytes默认是100MB,应该是跟生产者设置的max.request.size有关吧,如果max.request.size大于socket.request.max.bytes,应该会报这个错,max.request.size这个设置又是由batch.size组成,我有一个疑问是:topic的消息大小限制:max.message.bytes有啥关系,这个是broker的限制消息的大小?
官网的配置参考:https://kafka.apache.org/documentation/#producerconfigs
524288 看起来是源码硬编码限制的 kafka 源码 SaslServerAuthenticator.java 这个文件可以看见
public class SaslServerAuthenticator implements Authenticator { // GSSAPI limits requests to 64K, but we allow a bit extra for custom SASL mechanisms static final int MAX_RECEIVE_SIZE = 524288; private static final Logger LOG = LoggerFactory.getLogger(SaslServerAuthenticator.class);
好的,我也看下
就这一个说到点上了
感觉楼上说的对 但是这个问题 搜遍全网 也没人具体分析解决下
WARN Unexpected error from /10.144.100.176; closing connection (org.apache.kafka.common.network.Selector) org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600) at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:91) at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:154) at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:135) at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:343) at org.apache.kafka.common.network.Selector.poll(Selector.java:291) at kafka.network.Processor.poll(SocketServer.scala:476) at kafka.network.Processor.run(SocketServer.scala:416) at java.lang.Thread.run(Thread.java:748)
在公司主机部署是好的。换了台就不行了
调大socket.request.max.bytes
你有微信吗?不行的。调大内存溢出,然后修改kafka的内存,又报java.lang.OutOfMemoryError: Direct buffer memory。来来回回弄了很久
前辈我好急呀。我的扣扣是823758653
你这个OutOfMemoryError,要调大jvm的。
kafka启动脚本kafka-server-start.sh中指定了kafka启动时需要的最小内存,默认为1G
export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"
修改脚本 kafka-server-start.sh 中的最小启动内存。
调了,看着网上的export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G",我改成2,后面陆续出错,都加了
陆续出错 啥错呢?
有后续吗 我遇到跟你一样的问题
你好,我的报错是
[2020-02-09 18:09:31,071] WARN [SocketServer brokerId=1] Unexpected error from /192.168.53.28; closing connection (org.apache.kafka.common.network.Selector) org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = -720899) at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:130) 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:557) at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:495) at org.apache.kafka.common.network.Selector.poll(Selector.java:424) at kafka.network.Processor.poll(SocketServer.scala:628) at kafka.network.Processor.run(SocketServer.scala:545) at java.lang.Thread.run(Thread.java:748)
这个是什么意思?与
Invalid receive (size = 1195725856 larger than 104857600)
只差一点点我的也是报这个错误,请问这个是怎么解决的吗,谢谢了,万分感谢,我的qq1260253838
重启之后没有复现过了,我也摸不准什么原因
重启了吗。。
一直配的是这个大小,期间重启过好多次
这个问题你解了吗?我们也遇到了
大佬,有解决方案吗
broker.id=1 listeners=SASL_PLAINTEXT://。。。。。。。。。。。。。。 security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN super.users=。。。。。。。。。。。。。。 authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer num.network.threads=3 num.io.threads=8 auto.create.topics.enable=false socket.send.buffer.bytes=102400 socket.receive.buffer.bytes=102400 socket.request.max.bytes=104857600 max.connections.per.ip=500 log.dirs=。。。。。。。。。。。。。。 num.partitions=3 num.recovery.threads.per.data.dir=1 default.replication.factor=3 log.retention.hours=768 log.retention.bytes=1099511627776 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 log.cleaner.enable=false zookeeper.connect=。。。。。。。。。。。。。。 zookeeper.connection.timeout.ms=6000 password.encoder.secret=null
部分信息隐去了
message.max.bytes 这个呢?
启动日志是这个,我刚自己压测也是
说明104857600这个没问题吧,看启动日志,和524288有关的只有:
log.cleaner.io.buffer.size = 524288 offsets.load.buffer.size = 5242880 transaction.state.log.load.buffer.size = 5242880
这三个
错误日志里 应该有建议你改哪个参数的呀。
你测试的场景描述下呀。
出现524288是集群其他的生产者,我测试的调整buffer.memory batch.size max.request.size都是104957800,大于104857600,每次发送1000byte的数据,同一个分区99999999次
嗯,我猜你已经熟悉这些参数了。
WARN Unexpected error from /10.144.100.176; closing connection (org.apache.kafka.common.network.Selector) org.apache.kafka.common.network.InvalidReceiveException: Invalid receive (size = 1195725856 larger than 104857600) at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:91) at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71) at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:154) at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:135) at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:343) at org.apache.kafka.common.network.Selector.poll(Selector.java:291) at kafka.network.Processor.poll(SocketServer.scala:476) at kafka.network.Processor.run(SocketServer.scala:416) at java.lang.Thread.run(Thread.java:748)
在公司主机部署是好的,换台生产的就不行了。一直报这个。生产上面试了六台,同样问题。求大神看下
最后怎么解决的,我也遇到这个问题了
你的答案