Ubuntu上Kafka配置技巧
sudo apt update && sudo apt install openjdk-11-jdk -y;验证:java -version。/opt/zookeeper/conf/zoo.cfg关键参数:dataDir=/opt/zookeeper/data(数据目录)、clientPort=2181(客户端端口);启动命令:/opt/zookeeper/bin/zkServer.sh start。/opt/kafka;创建专用目录/opt/kafka/logs(日志存储)、/opt/kafka/data(Zookeeper数据),避免与系统目录冲突。broker.id需设置为唯一整数(如0);listeners=PLAINTEXT://your_server_ip:9092(监听所有IP的9092端口);advertised.listeners=PLAINTEXT://your_public_ip:9092(对外暴露的地址,供生产者/消费者连接)。log.dirs=/opt/kafka/logs(多目录逗号分隔,提升I/O并行度);log.retention.hours=72(日志保留72小时,根据业务需求调整);log.segment.bytes=1073741824(单个日志段1GB,避免单个文件过大)。num.partitions=3(默认分区数,根据消费者并发数调整,建议与消费者线程数匹配);default.replication.factor=2(副本因子,平衡数据可靠性与性能,生产环境建议≥2);delete.topic.enable=true(允许删除Topic,避免误操作残留)。-Xms8g -Xmx8g,初始与最大堆内存一致,避免动态扩展开销);使用G1垃圾回收器(-XX:+UseG1GC,适合大堆内存,减少停顿时间);设置元空间大小(-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m,避免元空间溢出);增加直接内存(-XX:MaxDirectMemorySize=1g,提升NIO操作性能)。num.network.threads=CPU核数+1(处理网络请求的线程数,如4核CPU设置为5);num.io.threads=CPU核数*2(执行磁盘I/O的线程数,如4核CPU设置为8);socket.send.buffer.bytes=102400(发送缓冲区大小,提升网络吞吐量);socket.receive.buffer.bytes=102400(接收缓冲区大小,提升网络吞吐量)。ulimit -n 65535,支持更多并发连接);优化内核参数(vm.swappiness=10,减少内存交换;vm.dirty_background_ratio=5,控制脏页刷新频率)。default.replication.factor=2(数据复制到2个Broker),min.insync.replicas=2(至少2个副本同步成功才返回成功,确保数据不丢失);监控ISR(In-Sync Replicas)列表,避免因副本滞后导致数据不一致。sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent;sudo firewall-cmd --reload),确保生产者/消费者能访问Broker。kafka-log-dirs.sh --clean,避免磁盘空间耗尽);定期升级Kafka版本(修复漏洞,提升性能)。