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
參數自動清理,也可手動刪除)。