Kafka的内存配置主要涉及以下几个方面:
log.dirs
和 log.retention.hours
log.dirs
: 指定Kafka日志存储的目录。log.retention.hours
: 设置日志保留的时间(小时)。log.segment.bytes
log.retention.check.interval.ms
log.segment.ms
log.flush.interval.messages
和 log.flush.interval.ms
num.partitions
replica.fetch.max.bytes
message.max.bytes
replica.lag.time.max.ms
Kafka Broker通常Java应用程序运行,因此需要配置JVM的内存参数。
-Xms
和 -Xmx
-Xms8g -Xmx8g
-XX:MetaspaceSize
和 -XX:MaxMetaspaceSize
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
-XX:+UseG1GC
-XX:MaxGCPauseMillis
-XX:MaxGCPauseMillis=200
socket.send.buffer.bytes
和 socket.receive.buffer.bytes
num.network.threads
num.io.threads
# Broker ID
broker.id=1
# Log directories
log.dirs=/tmp/kafka-logs
# Log retention policy
log.retention.hours=168
# Log segment size
log.segment.bytes=1073741824
# Log flush interval
log.flush.interval.messages=10000
log.flush.interval.ms=30000
# Number of partitions per topic
num.partitions=8
# Replica fetch max bytes
replica.fetch.max.bytes=104857600
# Message max bytes
message.max.bytes=1000000
# Replica lag time max ms
replica.lag.time.max.ms=10000
# JVM heap size
-Xms8g -Xmx8g
# Metaspace size
-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m
# Garbage collector
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
# Network threads
num.network.threads=3
# I/O threads
num.io.threads=8
通过合理配置Kafka的内存参数,可以显著提升其性能和稳定性。