以下是Kafka在Debian上的存储配置规划要点,结合搜索资源中的关键信息整理:
log.dirs参数指定多个存储目录(如/data1/kafka-logs,/data2/kafka-logs),分散磁盘I/O压力,提升吞吐量。appuser),避免权限不足导致写入失败。log.retention.hours设置消息保留时长(默认168小时,即7天),可根据业务需求调整。log.retention.bytes限制单个分区的最大存储大小(单位:字节),避免单个分区过大,建议设置为-1(不限制)或根据磁盘容量配置。delete策略(按时间或大小删除旧数据),如需压缩历史数据可配置为compact。log.segment.bytes设置单个日志段大小(默认1GB),较大的段可减少段文件数量,提升清理效率。log.flush.interval.messages和log.flush.interval.ms控制消息刷盘时机,平衡性能与可靠性(如设置为10000条或1000毫秒)。default.replication.factor(默认副本数,建议3)和min.insync.replicas(最小同步副本数,建议2),确保数据冗余和高可用性。-Xms4G -Xmx4G)分配足够堆内存,并启用堆外内存(-XX:MaxDirectMemorySize=4G)提升零拷贝效率。num.io.threads(建议设置为CPU核数的2倍),提升磁盘并行处理能力。/etc/kafka/server.properties)# 基础配置
broker.id=0
listeners=PLAINTEXT://0.0.0.0:9092
log.dirs=/data1/kafka-logs,/data2/kafka-logs # 多磁盘存储
zookeeper.connect=localhost:2181
# 存储与清理
log.retention.hours=168
log.retention.bytes=-1
log.segment.bytes=1073741824 # 1GB
log.cleanup.policy=delete
# 性能优化
num.network.threads=8
num.io.threads=16
socket.send.buffer.bytes=1024000
socket.receive.buffer.bytes=1024000
kafka-log-dirs命令查看各分区存储状态。参考来源: