vm.swappiness
為1(禁用swap),防止內存溢出導致性能下降。log.dirs
配置為多個目錄(如/data/kafka1,/data/kafka2
),實現并行讀寫。noatime
選項(禁用文件訪問時間戳更新),減少磁盤I/O開銷。vm.dirty_background_ratio=10
(后臺臟頁刷新閾值)、vm.dirty_ratio=60
(強制臟頁刷新閾值),平衡I/O性能與系統響應速度。fs.aio-max-nr=1048576
(默認65536),提升磁盤I/O并發能力。net.core.rmem_default=262144
、net.core.wmem_default=262144
、net.ipv4.tcp_wmem="4096 16384 131072"
、net.ipv4.tcp_rmem="4096 65536 1048576"
,提高網絡傳輸效率。ulimit -n 65535
(臨時生效),并在/etc/security/limits.conf
中永久設置(如* soft nofile 65535
),避免Broker因文件描述符不足拒絕連接。num.partitions
:根據業務需求設置(如每秒10萬條消息,每個分區處理1萬條,則需10個分區),確保充分利用CPU核心。default.replication.factor
:設置為3(生產環境推薦),兼顧數據可靠性與吞吐量(避免過高副本數導致同步延遲)。log.segment.bytes
:設置為1GB(默認1GB),減少日志段文件數量,降低文件系統元數據操作開銷。log.retention.ms
:根據業務需求設置(如7天),避免日志文件長期占用磁盤空間。compression.type
:啟用lz4壓縮(比gzip吞吐量更高、CPU開銷更低),減少網絡傳輸和磁盤I/O。num.io.threads
:設置為CPU核數的50%(如8核設置為4),處理磁盤寫操作;num.network.threads
設置為CPU核數的50%(如8核設置為4),處理網絡請求。-Xms4G -Xmx4G
),避免過大堆內存導致Full GC停頓。-XX:+UseG1GC
),減少GC對吞吐量的影響。batch.size
設置為1MB(默認16KB),linger.ms
設置為100ms(默認0ms),允許生產者積累更多消息后批量發送,減少網絡請求次數。compression.type
設置為lz4(與Broker一致),降低網絡傳輸成本。acks
設置為1(默認),平衡吞吐量與可靠性(若需強一致性,可設置為all
,但會降低吞吐量)。fetch.max.bytes
設置為1MB(默認1MB),fetch.max.wait.ms
設置為1000ms(默認500ms),增加每次拉取的數據量,減少網絡請求次數。max.poll.records
設置為500(默認500),max.poll.interval.ms
設置為300000ms(默認5分鐘),避免因處理慢導致消費者被踢出組。group.instance.id
(如instance-1
),避免消費者短暫離線觸發不必要的重平衡,提升消費穩定性。replica.lag.time.max.ms
設置為60000ms(默認10秒),允許副本在一定時間內落后Leader,減少同步延遲;num.replica.fetchers
設置為CPU核數的50%(如8核設置為4),提高副本同步效率。session.timeout.ms=10000
(默認10秒)、heartbeat.interval.ms=3000
(默認3秒),避免頻繁重平衡;啟用靜態成員(group.instance.id
),減少重平衡觸發次數。log.dirs
目錄,刪除過期日志(通過log.retention.ms
配置),確保磁盤空間充足(建議剩余空間≥20%)。kafka-producer-perf-test
(生產者壓測)和kafka-consumer-perf-test
(消費者壓測)工具,模擬實際負載,驗證優化效果(如調整batch.size
后,觀察吞吐量是否提升)。