解決Kafka消息堆積問題可從生產端、消費端、集群配置及硬件資源等方面入手,具體方法如下:
生產端優化
batch.size
(如1MB)和linger.ms
(如100ms)控制消息批量發送,避免瞬時流量過高。compression.type=gzip
)減少網絡開銷,異步處理非關鍵邏輯以提升發送效率。消費端優化
enable.auto.commit=true
)或手動提交,減少提交開銷。集群配置優化
kafka-topics.sh --alter
),提升并行處理能力。default.replication.factor
),避免因副本同步延遲導致消費阻塞。num.io.threads
(建議設置為CPU核心數的50%)和log.retention.hours
(如72小時)控制日志保留時間。compression.type
)減少磁盤占用。硬件與網絡優化
tcp_nodelay
)降低延遲。監控與維護
kafka-delete-records.sh
)或調整日志保留策略,避免磁盤占滿。參考來源: