一、基础环境准备
在Ubuntu上稳定运行Kafka的前提是正确安装和配置基础依赖,主要包括Java环境和ZooKeeper集群。
sudo apt update && sudo apt install openjdk-11-jdk -y
安装完成后验证版本:java -version,确保输出显示Java 11及以上版本。wget https://downloads.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz && tar -xzvf apache-zookeeper-3.7.0-bin.tar.gz。zoo.cfg(关键参数):dataDir=/opt/zookeeper/data(数据目录)、clientPort=2181(客户端端口)、server.1=zoo1:2888:3888(集群节点信息,需替换为实际IP)。/opt/zookeeper/bin/zkServer.sh start,并通过netstat -nap | grep 2181验证端口监听。二、Kafka Broker核心配置优化
Kafka的稳定性高度依赖Broker配置的合理性,需重点调整以下参数:
log.dirs:指定日志存储目录(如/var/lib/kafka/logs),需确保目录存在且Kafka进程有读写权限(sudo mkdir -p /var/lib/kafka/logs && sudo chown -R kafka:kafka /var/lib/kafka/logs);listeners:设置Broker监听地址(如PLAINTEXT://your_server_ip:9092),确保外部客户端可访问;advertised.listeners:客户端使用的Broker地址(如PLAINTEXT://your_public_ip:9092),用于集群间通信。zookeeper.connect需指向ZooKeeper集群地址(如zoo1:2181,zoo2:2181,zoo3:2181),确保Broker能连接到ZooKeeper。export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"(根据服务器内存调整,建议不超过物理内存的70%);export KAFKA_HEAP_OPTS="$KAFKA_HEAP_OPTS -XX:+UseG1GC"。三、操作系统层面优化
操作系统参数直接影响Kafka的I/O和网络性能,需调整以下关键参数:
ulimit -n 65535;永久生效:编辑/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535)。/etc/sysctl.conf中的参数,提升网络吞吐量和连接稳定性:
net.core.somaxconn=65535(最大连接队列长度);net.ipv4.tcp_max_syn_backlog=65535(SYN队列长度);net.ipv4.tcp_tw_reuse=1(复用TIME-WAIT连接);sysctl -p使配置生效。四、Kafka性能调优
通过调整Kafka参数提升吞吐量和延迟表现:
num.partitions设置为消费者线程数的1-2倍(如消费者有4个线程,分区数设为4-8),充分利用多线程并行处理能力。batch.size:增大批量提交大小(如1MB),减少网络I/O次数;linger.ms:延长消息发送延迟(如100ms),合并更多消息到批次;compression.type:启用压缩(如lz4,兼顾吞吐量和CPU开销),减少网络传输量。num.io.threads:设置为CPU核心数的50%(如8核CPU设为4),处理磁盘I/O操作;num.network.threads:设置为CPU核心数的50%的2/3(如8核CPU设为5),处理网络请求。log.retention.hours根据数据需求设置(如72小时),log.segment.bytes设置日志段大小(如1GB),避免单个日志文件过大。五、监控与维护
稳定的Kafka集群需要持续的监控和维护:
kafka-log-dirs.sh工具删除超过7天的日志),避免磁盘空间耗尽;调整log.retention参数自动清理旧日志。log.dirs目录权限和磁盘空间;num.partitions、batch.size等参数提升吞吐量;server.log)定位原因。