总会遇到各种各样的需求,kafka达到最佳吞吐量的消息大小是10k,而在我们的项目中,消息有的是1k,有的是100M,最大可达400M,这种消息很少很少,但是会有,所以整套环境必须要使用1K~400M。
kafka最近的版本对消息的最大限制是2G,是足够的,这里有3个地方要配置:
- broker
message.max.bytes :500000000B(500M),这是单个消息的最大值
replica.fetch.max.bytes :512000000B(512M),这是单个消息的最大值broker可复制的消息的最大字节数,比message.max.bytes大,否则broker会接收此消息,但无法将此消息复制出去,从而造成数据丢失,但是不能太大!!!不然复制的时候容易内存溢出 - consumer
fetch.message.max.bytes:500000000B(500M) 这是消费者能读取的最大消息,大于或等于message.max.bytes - producer
max.request.size:500000000B(500M) 这是生产者能请求的最大消息,大于或等于message.max.bytes
kafka jvm参数调整:
- 堆内存:kafka-server-start.sh文件的 export KAFKA_HEAP_OPTS="-Xmx6G -Xms6G"
这样基本就完了