Kafka在Ubuntu上的优化配置指南
sudo apt update && sudo apt install openjdk-8-jdk安装,验证java -version确认安装成功。wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz),配置zoo.cfg(设置dataDir=/var/lib/zookeeper、clientPort=2181),启动服务bin/zkServer.sh start。JVM堆内存设置是Kafka性能的核心之一,需根据服务器内存调整:
kafka-server-start.sh),添加export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"(初始堆内存与最大堆内存一致,避免频繁扩容)。-XX:+UseG1GC参数。-XX:MaxGCPauseMillis=20(最大GC停顿时间目标),优化GC性能。listeners=PLAINTEXT://your_server_ip:9092(替换为服务器IP),允许远程访问。log.dirs=/mnt/ssd/kafka-logs),避免使用系统盘。num.partitions=8(默认1,根据吞吐量需求调整),设置default.replication.factor=3(数据可靠性,需≥2)。num.network.threads=3(处理网络请求的线程数,小集群可保持默认)、num.io.threads=8(处理磁盘IO的线程数,建议为CPU核心数的2倍)。socket.send.buffer.bytes=1048576(生产者发送缓冲区,1MB)、socket.receive.buffer.bytes=1048576(消费者接收缓冲区,1MB),提升网络传输效率。log.segment.bytes=1073741824(1GB,控制日志滚动频率,过大影响删除效率)。log.retention.hours=168(保留7天,根据业务需求调整)、log.retention.check.interval.ms=300000(每5分钟检查一次过期日志)。batch.size=32768(批量发送大小,32KB,提高吞吐量)、linger.ms=5(等待批量发送的时间,减少请求次数)、compression.type=snappy(启用Snappy压缩,减少网络传输开销)。fetch.min.bytes=1048576(每次拉取的最小数据量,1MB)、fetch.max.wait.ms=100(拉取等待时间,平衡延迟与吞吐量)。noatime选项(如mount -o noatime /dev/sdb1 /mnt/ssd),减少文件访问时间更新的开销。ulimit -n 100000(临时)、编辑/etc/security/limits.conf添加* soft nofile 100000(永久)。sysctl -w net.ipv4.tcp_fin_timeout=30(TCP连接超时时间)、sysctl -w net.core.rmem_max=16777216(接收缓冲区最大值)、sysctl -w net.core.wmem_max=16777216(发送缓冲区最大值)。num.io.threads需匹配CPU核心数(如8核设置16)。log.dirs目录,清理过期日志(通过log.retention.hours参数自动清理,也可手动删除)。