一、基础环境准备
sudo yum install java-11-openjdk-devel -y安装,验证java -version确认安装成功。/opt/kafka目录:wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz && tar -xzf kafka_2.13-3.6.1.tgz -C /opt/。sudo firewall-cmd --zone public --add-port 9092/tcp --permanent && sudo firewall-cmd --zone public --add-port 2181/tcp --permanent && sudo firewall-cmd --reload。二、Kafka核心配置优化(server.properties)
broker.id(如0);listeners=PLAINTEXT://0.0.0.0:9092(监听所有IP的9092端口);advertised.listeners=PLAINTEXT://your_server_ip:9092(对外公开的Broker地址,需替换为实际IP);log.dirs=/data/kafka/logs(指定日志存储目录,建议使用独立高速磁盘);zookeeper.connect=localhost:2181(Zookeeper连接字符串,集群环境下需列出所有节点)。num.network.threads=3(处理网络请求的线程数,建议为CPU核数+1);num.io.threads=8(处理磁盘I/O的线程数,建议为CPU核数的2倍)。socket.send.buffer.bytes=102400(发送缓冲区大小,默认100KB,可根据网络带宽调整至100KB-1MB);socket.receive.buffer.bytes=102400(接收缓冲区大小);socket.request.max.bytes=104857600(单个请求最大字节数,默认100MB,可根据消息大小调整至100MB-500MB)。num.partitions=3(新Topic的默认分区数,建议设置为消费者线程数的2-3倍,以提升并行处理能力);default.replication.factor=3(副本数,建议≥2以保证数据可靠性,集群节点数≥副本数);min.insync.replicas=2(最小同步副本数,确保数据同步的可靠性,建议≤副本数-1)。log.retention.hours=168(日志保留时间,默认168小时/7天,可根据业务需求调整至72-168小时);log.segment.bytes=1073741824(单个日志段大小,默认1GB,建议设置为1-10GB,减少日志切换频率);log.retention.check.interval.ms=300000(日志清理检查间隔,默认5分钟,建议调整为300000ms/5分钟)。compression.types=lz4(启用消息压缩,推荐lz4算法,兼顾吞吐量与CPU开销,减少网络传输和磁盘IO)。三、操作系统层优化
noatime选项(禁用文件访问时间更新,减少磁盘写操作):mount -o noatime /dev/sdb1 /data/kafka。vm.swappiness设置为1(默认60),减少系统使用Swap的概率,避免频繁的磁盘交换影响性能:echo "vm.swappiness=1" >> /etc/sysctl.conf && sysctl -p。echo "* soft nofile 65536" >> /etc/security/limits.conf && echo "* hard nofile 65536" >> /etc/security/limits.conf。vm.max_map_count(默认65530),增加内存映射区域的数量,提升Kafka处理大量数据的能力:echo "vm.max_map_count=262144" >> /etc/sysctl.conf && sysctl -p。四、JVM调优
-Xms(初始堆内存)和-Xmx(最大堆内存)为相同值(如4GB),避免堆内存动态调整带来的性能波动:export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"。export KAFKA_JVM_PERFORMANCE_OPTS="-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35"。五、启动与验证
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties。test的Topic(分区数3,副本数3):/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server your_server_ip:9092 --replication-factor 3 --partitions 3 --topic test。/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server your_server_ip:9092 --topic test/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server your_server_ip:9092 --topic test --from-beginning。六、监控与维护
kafka-exporter导出JMX指标。find /data/kafka/logs -type f -name "*.log" -mtime +7 -exec rm -f {} \;。