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的內存參數,可以顯著提升其性能和穩定性。