Ubuntu环境下Kafka配置的关键窍门
在Ubuntu上部署Kafka前,需先安装Java(建议OpenJDK 8+,通过sudo apt install openjdk-8-jdk)和Zookeeper(Kafka依赖其实现分布式协调)。Kafka的安装路径建议选择非系统目录(如/usr/local/kafka),避免权限问题;配置文件(server.properties、zoo.cfg)集中管理,便于后续修改。
Kafka运行在JVM上,堆内存设置直接影响吞吐量与GC频率。需通过KAFKA_HEAP_OPTS环境变量调整:
-Xms)与最大堆内存(-Xmx)设置为相同值(如-Xms4G -Xmx4G),避免动态扩容带来的性能波动;-XX:+UseG1GC启用),减少Full GC停顿时间。server.properties是Kafka Broker的核心配置文件,需重点调整以下参数:
broker.id必须唯一(集群中每个节点需设置不同值,如0、1、2);listeners=PLAINTEXT://your_server_ip:9092(替换为服务器实际IP),advertised.listeners需指向客户端可访问的地址(如集群外客户端需填写公网IP);log.dirs=/var/lib/kafka/logs(多块磁盘可逗号分隔,如/disk1/kafka,/disk2/kafka,提升I/O吞吐量);zookeeper.connect=localhost:2181(集群中需列出所有Zookeeper节点,如host1:2181,host2:2181,host3:2181);num.partitions=8(默认1,根据消费者数量调整,建议大于消费者数)、default.replication.factor=3(数据可靠性,集群节点数≥副本数)。ulimit -n 65535;永久:编辑/etc/security/limits.conf,添加kafka hard nofile 65535);/etc/sysctl.conf中的net.core.somaxconn=65535(最大连接队列长度)、net.ipv4.tcp_max_syn_backlog=65535(SYN队列长度),提升网络连接效率;noatime选项(减少磁盘写入次数,如sudo mount -o remount,noatime /dev/sdb1 /var/lib/kafka)。batch.size:增加批处理大小(如32768,单位字节),减少网络请求次数;linger.ms:适当延迟发送(如5毫秒),合并小批次消息;compression.type:启用压缩(如snappy),减少网络带宽占用(压缩率约3-4倍,对延迟影响小);fetch.min.bytes:增加每次拉取的最小数据量(如1048576,1MB),减少拉取次数;fetch.max.wait.ms:适当延长拉取等待时间(如100毫秒),平衡延迟与吞吐量。log.retention.hours=168,保留7天;log.segment.bytes=1073741824,每个日志段1GB),定期清理旧日志(避免磁盘空间耗尽);以上窍门覆盖了Ubuntu环境下Kafka从安装到运行的关键配置,需根据实际业务场景(如数据量、延迟要求)调整参数,并在测试环境中验证效果后再应用于生产。