总会遇到各种各样的需求,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"

这样基本就完了

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐