运用自带压测脚本如下:
bin/kafka-producer-perf-test.sh --topic large-message --record-size 6291456 --num-records 100 --throughput -1 --producer-props bootstrap.servers=15.101.52.138:9092
报告以下错误:
org.apache.kafka.common.errors.RecordTooLargeException: The message is 6291544 bytes when serialized which is larger than 1048576, which is the value of the max.request.size configuration.
已经尝试配置以下脚本:
生产者配置:
max.request.size=12582912
服务端配置:
message.max.bytes=12695150
replica.fetch.max.bytes=20485760
请问以上配置是否有误呢,另外还尝试配置过消费者配置,重启kafka,执行以上命令仍然报告以上错误,麻烦大佬看看,谢谢
which is larger than
1048576
,这个错误的数量变化了吗?如果错误提示的大小已经是改过后的,说明你还需要加大。
如果是之前的大小,说明你的调整没有生效。
谢谢@半兽人的回复,这个数1048576一直没有改变,提示的是这个数。是因为我在producer.properties里更改的配置max.request.size=12582912 而运行的却是 kafka-producer-perf-test.sh脚本的缘故么?我也重新启动几次kafka了
是的,这俩个是不同的脚本。
哦,这个应该是一个是配置文件producer.properties,一个是运行脚本kafka-producer-perf-test.sh,后面这个运行脚本对修改producer.properties不会生效么?
你需要在压测脚本命令增加
--producer.config
指定你的producer.properties
,如下:bin/kafka-producer-perf-test.sh ...省略... --producer.config config/producer.properties
强!原来如此。如果单独的用kafka-console-producer.sh脚本发送消息,就不用指明 --producer.config config/producer.properties 配置信息了吧
什么意思?
意思是用kafka-console-producer.sh脚本来发送大消息,比如一条消息超过8M, 这样在启动这个脚本时,是不是不需要指定--producer.config config/producer.properties 选项了?此外,顺便请教下,如果批量发送这么大的消息,一般采用什么策略呢?分片?压缩还是其它的
你的答案