优化Linux Kafka配置文件可以从多个方面入手,包括操作系统层面、Kafka Broker配置、JVM优化、生产者和消费者配置等。以下是一些关键的优化策略和具体参数设置:
echo "* hard nofile 100000" >> /etc/security/limits.conf
echo "* soft nofile 100000" >> /etc/security/limits.conf
echo 'net.core.wmem_default=16777216' >> /etc/sysctl.conf
echo 'net.core.rmem_default=16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max=16777216' >> /etc/sysctl.conf
echo 'net.core.rmem_max=16777216' >> /etc/sysctl.conf
echo 'vm.nr_hugepages=1024' >> /etc/sysctl.conf
num.partitions
:根据CPU核心数调整。log.dirs
:使用多块磁盘时用逗号分隔。log.segment.bytes
:1GB的段大小。num.network.threads
:处理网络请求的线程数。num.io.threads
:处理磁盘IO的线程数,建议为磁盘数的2-3倍。log.flush.interval.messages
:每多少条消息刷盘一次。log.flush.interval.ms
:消息刷盘间隔(毫秒)。log.flush.scheduler.interval.ms
:检查刷盘的时间间隔。default.replication.factor
:生产环境建议2-3。min.insync.replicas
:确保至少一个副本确认。export KAFKA_HEAP_OPTS="-Xms8g -Xmx8g -XX:MetaspaceSize=96m -XX:+UseG1GC"
export KAFKA_JVM_PERFORMANCE_OPTS="-XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80"
batch.size
:增大批次大小(字节)。linger.ms
:等待更多消息加入批次的时间。compression.type
:或lz4/zstd。buffer.memory
:生产者缓冲区大小。fetch.min.bytes
:最小抓取字节数。fetch.max.wait.ms
:等待时间。max.partition.fetch.bytes
:每个分区返回的最大数据量。export JMX_PORT=9999
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
log.cleaner.enable=true
时压缩工作正常。在进行任何配置更改之前,建议在测试环境中验证其效果,以确保不会对生产环境造成不良影响。