日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用云消息隊列 Kafka 版時出現消息堆積

使用云消息隊列 Kafka 版時,可能會發現Group中出現消息堆積。本文介紹如何判斷消息堆積是否屬于正常情況,以及處理方法。

客戶端消費流程

了解客戶端消費流程,有助于理解消息是否堆積。一般情況下,客戶端消費流程大致如下:

image

判斷消息堆積是否屬于正常情況

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

  1. 登錄云消息隊列 Kafka 版控制臺

  2. 在頂部菜單欄,選擇地域。

  3. 在左側導航欄,單擊實例列表

  4. 實例列表頁面,單擊目標實例名稱。

  5. 實例詳情頁面,單擊左側菜單欄中的Group管理

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

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

    說明

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

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

      說明

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

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

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

      說明

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

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

消息堆積的處理方式

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

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

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

說明
  • Java進程可以通過Jstack打印消費者進程的堆棧信息。

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

相關文檔