首页 > 其他分享 >如何规划设置Kafka Broker的heap size

如何规划设置Kafka Broker的heap size

时间:2022-10-04 13:33:08浏览次数:77  
标签:heap 查看 max bytes Broker Kafka Heap

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1.文档编写目的



在使用Kafka服务的过程中,会随着数据量的增加而导致Kafka服务OOM的问题,本篇文章Fayson主要介绍如何合理的设置Kafka的Heap大小,以避免OutOfMemory问题。本篇文章适用于CDH5,6及Kafka的任何版本。


2.OOM症状



由于Kafka服务没有足够的堆内存来执行操作,导致Kafka的Broker崩溃。通过观察Kafka broker的stdout.log可以看到如下异常:


java.lang.OutOfMemoryError: Java heap space
Dumping heap to /tmp/kafka_kafka-KAFKA_BROKER-81ee01822c14b4c214806690e83e1e31_pid17226.hprof ...
Heap dump file created [11681362 bytes in 0.076 secs]
#
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="/usr/lib64/cmf/service/common/killparent.sh"
# Executing /bin/sh -c "/usr/lib64/cmf/service/common/killparent.sh"...

(可左右滑动)


如何规划设置Kafka Broker的heap size_kafka


接下里Fayson就介绍下怎么合理的设置Kafka的Heap大小。


3.Kafka Heap Size配置建议



要知道Kafka Broker至少需要多少的Java Heap大小,我们需要知道Kafka的相关信息,主要有如下几点:


1.每个Kafka Broker有多少个Partitions,关于Broker中的Partition数量可通过CM进行查看


如何规划设置Kafka Broker的heap size_kafka_02


2.通过CM配置界面查看replica.fetch.max.bytes的大小(默认为1MB) 


3.通过CM配置界面查看message.max.bytes的大小(默认为1000000bytes)


知道上面的三个信息后,通过replica.fetch.max.bytes和分区数来计算Java Heap大小:不小于(replica.fetch.max.bytes * 分区数),确保分区数乘以最大消息的大小不超过你设置的heap。当然在Broker分区数比较少的情况下该方式也不适用,尤其在刚安装Kafka服务或者topic比较少的时候,这时可以采用cdh的默认值1GB。


Kafka Broker设置准则,有如下需要注意的地方: 

1.replica.fetch.max.bytes必须大于message.max.bytes。


2.对于Kafka的生产集群,建议Heap的大小不低于4GB,因为较小的Heap可能会导致更频繁的GC暂停问题,反而会导致Broker的不稳定性和性能问题。


3.同样也建议Heap的大小不要超过8GB,因为Heap过大会导致更长的GC暂停。如果确定Heap要超过8GB,则应该考虑添加更多的Broker并在集群中进行Partiton的重分配。可参考Fayson前面的文章《​​如何实现Kafka的Partition重分配​​》



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

如何规划设置Kafka Broker的heap size_kafka_03

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操


标签:heap,查看,max,bytes,Broker,Kafka,Heap
From: https://blog.51cto.com/u_14049791/5731216

相关文章