全部產品
Search
文件中心

ApsaraMQ for Kafka:使用雲訊息佇列 Kafka 版時出現訊息堆積

更新時間:Jul 10, 2026

使用ApsaraMQ for Kafka時,可能會發現Group中出現訊息堆積。本文介紹如何判斷訊息堆積是否屬於正常情況,以及處理方法。

用戶端消費流程

瞭解用戶端消費流程,有助於理解訊息是否堆積。一般情況下,用戶端消費流程大致如下:

判斷訊息堆積是否屬於正常情況

如果發現Group中出現訊息堆積,請參見下列步驟,判斷訊息堆積是否屬於正常情況:

  1. 登入雲訊息佇列 Kafka 版控制台

  2. 在頂部功能表列,選擇地區。

  3. 在左側導覽列,單擊執行個體列表

  4. 執行個體列表頁面,單擊目標執行個體名稱。

  5. 執行個體詳情頁面,單擊左側功能表列中的Group管理

  6. Group管理頁面,找到目標Group,在其操作列,選擇更多>消費狀態

  7. 消費狀態頁簽,每間隔1分鐘記錄一次各個Topic分區的最近消費時間堆積量訊息位點,然後進行下列判斷:

    說明

    訊息位點可通過單擊詳情按鈕進行查看。

    • 最近消費時間與目前時間接近,並且堆積量保持在一個穩定的數值之間波動,沒有持續擴大。 說明用戶端一直在拉取最新訊息,沒有訊息堆積,屬於正常情況。

      說明

      訊息堆積量會根據訊息量、消費端位點提交頻率的變化而變化,數值大並不一定表示堆積。例如,某個Topic的發送頻率為10000 tps,消費端位點提交頻率為1 s提交1次,正常情況下展示的堆積量可能會一直在10000左右波動,但並非意味著訊息堆積了。

    • 堆積量逐步擴大,並且訊息位點一直不變。 用戶端的消費線程因為某些原因卡住,沒有繼續消費,也沒有繼續向服務端提交位點,屬於異常情況,即訊息的確堆積了。請參見下文的訊息堆積的處理方式章節進行處理。

    • 堆積量逐步擴大,同時消費位點在前進。 說明用戶端還在消費中,但是訊息的消費速度慢於訊息的發送速度。由於訊息是用戶端主動從服務端批量拉取,用戶端消費流程中的步驟1一般不會是消費的瓶頸。此時,需要排查步驟2的消費耗時,請參見下文的訊息堆積的處理方式章節進行處理。

      說明

      訊息堆積大多是消費速度過慢或者消費線程阻塞造成的,建議不要在消費邏輯中有太多耗時的操作。

    • 分區訊息堆積,下遊消費卻無異常。下遊可能採用了assign消費模式,位點是您自己管理的。這種情況下雖然顯示了堆積,實際上您可能已經消費了,但是沒有提交位點。建議您及時手動提交位點解決訊息堆積問題。

    • 若執行個體觸發了消費限流,消費者並非完全無法拉取訊息,而是消費速度受限,導致部分訊息不能被及時消費,從而產生堆積。此時控制台顯示的堆積量會上升,但消費位點仍在緩慢前進。建議結合執行個體監控確認是否觸發限流。

    • 通常情況下,單個 Topic 的訊息大量堆積不會直接影響同執行個體下其他 Topic 的正常消費。但如果堆積引發了磁碟讀 IOPS 或流量過高(即冷讀風險),則可能間接影響整體執行個體效能,導致其他 Topic 消費也變慢。建議在排查時關注執行個體層級的磁碟 IO 和網路流量監控指標。

訊息堆積的處理方式

經過上述判斷,確認訊息的確存在堆積情況時,建議列印訊息的消費耗時,或者根據堆棧資訊查看線程執行情況。根據以下方案適當調整以加快訊息的消費速度,避免出現訊息堆積。

  • 增加Consumer執行個體個數。可以在進程內直接增加(需要保證每個執行個體對應一個線程),也可以部署多個消費執行個體進程。需要注意的是,執行個體個數超過分區數量後就不再能提高速度,否則將會有消費執行個體不工作。

  • 增加消費線程。更多資訊,請參見提高消費速度

說明
  • Java進程可以通過Jstack列印消費者進程的堆棧資訊。

  • 若出現訊息堆積,同時控制台上消費狀態出現異常,可能有Rebalance 現象,在Rebalance期間不會進行消費,導致大量堆積,具體原因是有大量用戶端在此上下線。更多資訊,請參見為什麼消費用戶端頻繁出現Rebalance?

  • 若出現 read tcp i/o timeout 錯誤導致訊息堆積,垂直擴容 Kafka 執行個體通常不能直接解決該問題。該錯誤更多與網路連通性或用戶端配置有關,建議按以下步驟排查:

    1. 檢查用戶端與服務端之間的網路連通性是否穩定。

    2. 確認用戶端版本,若低於 0.10.2 建議升級。

    3. 調整用戶端參數 max.poll.interval.mssession.timeout.ms,避免因處理逾時觸發 Rebalance。

    4. 通過控制台查看消費狀態頁簽,確認堆積量和位點變化是否符合預期。僅當確認是服務端資源瓶頸導致的逾時時,才考慮擴容。

相關文檔