【生产】kafka 调优

时间:2022-12-09 15:17:48

适用于 es 和kafka

jstat -gcutil pid


jstat -gcutil pid 1000

通过 jstat -gcutil 1000 查看到kafka进程GC情况 主要看 YGC,YGCT,FGC,FGCT 这几个参数,如果这几个值不是很大,就没什么问题

YGC:young gc发生的次数
YGCT:young gc消耗的时间
FGC:full gc发生的次数
FGCT:full gc消耗的时间

如果你发现 YGC 很频繁,或者 FGC 很频繁,就说明内存分配的少了
此时需要修改 kafka-server-start.sh 中的 KAFKA_HEAP_OPTS
replica.socket.timeout.ms=60000 这个参数的默认值是30秒,它是控制partiton副本之间socket通信的超时时间,如果设置的太小,有可能 会由于网络原因导致造成误判,认为某一个partition副本连不上了。
replica.lag.time.max.ms=50000 如果一个副本在指定的时间内没有向leader节点发送任何请求,或者在指定的时间内没有同步完leader中 的数据,则leader会将这个节点从Isr列表中移除。 这个参数的值默认为10秒 如果网络不好,或者kafka压力较大,建议调大该值,否则可能会频繁出现副本丢失,进而导致集群需要 频繁复制副本,导致集群压力更大,会陷入一个恶性循环

 如果你发现 YGC 很频繁,或者 FGC 很频繁,就说明内存分配的少了 

【生产】kafka 调优

Log参数调忧



Log参数调忧

log.retention.hours=24 这个参数默认值为168,单位是小时,就是7天,默认对数据保存7天,可以在这调整数据保存的时间,我 们在实际工作中改为了只保存1天,因为kafka中的数据我们会在hdfs中进行备份,保存一份,所以就没有 必要在kafka中保留太长时间了。 在kafka中保留只是为了能够让你在指定的时间内恢复数据,或者重新消费数据,如果没有这种需求,那 就没有必要设置太长时间。
这里分析的 Replication 的参数和 Log 参数都是在 server.properties 文件中进行配置 JVM 参数是在 kafka-server-start.sh 脚本中配置