首頁技術(shù)文章正文

Kafka出現(xiàn)數(shù)據(jù)積壓問題怎樣解決?

更新時間:2023-10-18 來源:黑馬程序員 瀏覽量:

Kafka消費者消費數(shù)據(jù)的速度是非??斓模绻捎谔幚鞬afka消息時,由于有一些外部IO、或者是產(chǎn)生網(wǎng)絡(luò)擁堵,就會造成Kafka中的數(shù)據(jù)積壓(或稱為數(shù)據(jù)堆積)。如果數(shù)據(jù)一直積壓,會導(dǎo)致數(shù)據(jù)出來的實時性受到較大影響。

使用Kafka-Eagle查看數(shù)據(jù)積壓情況

按照以下步驟查看分區(qū)消費數(shù)據(jù)的積壓情況。

1697617657085_積壓.png

1697617798476_2.png

1697617836298_12.png

1697617975384_13.png

解決數(shù)據(jù)積壓問題

當(dāng)Kafka出現(xiàn)數(shù)據(jù)積壓問題時,首先要找到數(shù)據(jù)積壓的原因。以下是在企業(yè)中出現(xiàn)數(shù)據(jù)積壓的幾個類場景。

1.數(shù)據(jù)寫入MySQL失敗

某日運維人員找到開發(fā)人員,說某個topic的一個分區(qū)發(fā)生數(shù)據(jù)積壓,這個topic非常重要,而且開始有用戶投訴。運維非常緊張,趕緊重啟了這臺機器。重啟之后,還是無濟于事。

消費這個topic的代碼比較簡單,主要就是消費topic數(shù)據(jù),然后進行判斷在進行數(shù)據(jù)庫操作。運維通過kafka-eagle找到積壓的topic,發(fā)現(xiàn)該topic的某個分區(qū)積壓了幾十萬條的消息。

最后,通過查看日志發(fā)現(xiàn),由于數(shù)據(jù)寫入到MySQL中報錯,導(dǎo)致消費分區(qū)的offset一自沒有提交,所以數(shù)據(jù)積壓嚴重。

2.因為網(wǎng)絡(luò)延遲消費失敗

基于Kafka開發(fā)的系統(tǒng)平穩(wěn)運行了兩個月,突然某天發(fā)現(xiàn)某個topic中的消息出現(xiàn)數(shù)據(jù)積壓,大概有幾萬條消息沒有被消費。

通過查看應(yīng)用程序日志發(fā)現(xiàn),有大量的消費超時失敗。后查明原因,因為當(dāng)天網(wǎng)絡(luò)抖動,通過查看Kafka的消費者超時配置為50ms,隨后,將消費的時間修改為500ms后問題解決。


分享到:
在線咨詢 我要報名
和我們在線交談!