Ubuntu上Kafka合理配置指南
sudo apt update && sudo apt install openjdk-11-jdk -yjava -version(需显示Java版本信息)。zoo.cfg(设置dataDir、clientPort=2181),启动服务:sudo /usr/local/zookeeper/bin/zkServer.sh start。/usr/local/kafka)。server.properties)listeners=PLAINTEXT://0.0.0.0:9092(允许所有IP访问),advertised.listeners=PLAINTEXT://your_server_ip:9092(客户端访问地址);zookeeper.connect=localhost:2181(集群环境下填写多个Zookeeper节点,用逗号分隔);num.partitions=3(根据消费者线程数设置,建议与消费者并行度匹配),default.replication.factor=3(数据可靠性,生产环境建议≥3);log.dirs=/tmp/kafka-logs1,/tmp/kafka-logs2(配置多个日志目录,挂载到不同物理磁盘提升IO性能),log.retention.hours=168(保留7天数据),log.segment.bytes=1073741824(日志段大小设为1GB,便于管理和清理);auto.create.topics.enable=false(禁止自动创建Topic,避免误操作),unclean.leader.election.enable=false(禁止非同步副本成为Leader,保证数据一致性)。kafka-server-start.sh),添加export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"(初始堆内存与最大堆内存一致,避免频繁扩容);export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35"(减少Full GC停顿时间)。noatime选项(减少文件系统写操作):sudo mount -o noatime /dev/sdb1 /mnt/kafka_logs;vm.swappiness=1(减少交换空间使用,避免内存不足时性能骤降),vm.max_map_count=262144(增加内存映射区域数量,满足Kafka内存需求),fs.file-max=100000(增加系统最大文件描述符数);/etc/security/limits.conf,添加* soft nofile 100000、* hard nofile 100000(允许单个进程打开更多文件)。num.network.threads=8(处理网络请求的线程数,根据CPU核心数调整,建议为CPU核心数的1-2倍);num.io.threads=8(处理磁盘IO的线程数,建议为CPU核心数的2倍);socket.send.buffer.bytes=1048576、socket.receive.buffer.bytes=1048576(优化网络传输性能,单位:字节)。producer.properties)batch.size=32768(批量提交的消息字节数,建议1MB左右,提升吞吐量),linger.ms=5(发送间隔,建议100ms以上,平衡延迟与吞吐量);compression.type=lz4(启用LZ4压缩,减少网络IO开销,压缩比约2-3倍);acks=all(确保消息写入所有ISR副本,保证可靠性),retries=3(失败重试次数,避免消息丢失)。consumer.properties)fetch.min.bytes=1048576(每次获取的最小消息字节数,建议1MB左右),fetch.max.wait.ms=500(等待时间,建议1秒以内,平衡延迟与吞吐量);max.poll.records=10000(每次poll的最大消息数,根据消费能力调整),max.poll.interval.ms=300000(两次poll的最大间隔,避免消费者被踢出组)。logrotate),避免日志文件过大占用磁盘空间;log.retention参数自动清理),监控磁盘空间(确保log.dirs所在磁盘有足够空间)。