以下是CentOS下Kafka的高效配置要点,涵盖硬件、系统、Kafka参数及监控等方面:
硬件选择
log.dirs)分散写入压力。-Xms8G -Xmx8G),剩余作为页缓存。ethtool -l eth0)并调整队列长度。操作系统调优
# 减少swap使用
vm.swappiness=1
# 优化脏页刷新
vm.dirty_background_ratio=5
vm.dirty_ratio=10
# 增加异步I/O队列
fs.aio-max-nr=1048576
noatime,nodiratime选项。Broker配置(server.properties)
num.network.threads:设置为CPU核数+1,处理网络请求。num.io.threads:设置为CPU核数×2,处理磁盘I/O。log.segment.bytes:增大分段大小(如4GB),减少分段数量。log.retention.hours:根据业务需求设置保留时间(如72小时)。log.dirs:配置多个磁盘路径(如/data1/kafka,/data2/kafka),实现负载均衡。compression.type:启用snappy或lz4压缩,减少网络和存储开销。Topic配置
num.partitions):根据吞吐量需求设置(建议每节点100-200分区)。replication.factor):生产环境设为3,确保数据冗余。export KAFKA_HEAP_OPTS="-Xms8G -Xmx8G -XX:+UseG1GC -XX:MaxGCPauseMillis=20"
log.retention.bytes和log.retention.hours控制。网络参数
socket.send.buffer.bytes=102400,socket.receive.buffer.bytes=102400。compression.type=snappy,减少传输数据量。消费者/生产者优化
fetch.max.bytes(如50MB)和max.poll.records(如500),减少拉取次数。batch.size(如16KB)和linger.ms(如10ms),优化批量发送。UnderReplicatedPartitions(副本同步状态)、MessagesInPerSec(吞吐量)。security.inter.broker.protocol=SASL_PLAINTEXT及对应密钥文件。参考来源: