當Kafka出現消費堆積、傾斜、流量被限流等異常時,您可以查看Group和Topic之間的訂閱關係,擷取Topic各個分區的消費進度,瞭解訊息的堆積總量,及時調整業務、預防風險。
注意事項
建議一個消費組不要訂閱超過三個Topic,避免訊息堆積。
當您使用
assign
消費模式時,請及時手動提交消費位點,避免實際已消費訊息,卻由於未提交位點顯示訊息堆積。若堆積量較大,請檢查訊息消費速率和生產速率,若前者小於後者,建議您通過提升消費能力的方式來緩解。
查看Topic被訂閱的Group
登入雲訊息佇列 Kafka 版控制台,在概览頁面的资源分布地區,選擇地區。
在实例列表頁面,單擊目標執行個體名稱。
在左側導覽列,單擊Topic管理。
在Topic管理頁面,單擊目標Topic名称。
在Topic 详情頁面,單擊订阅关系頁簽。
在订阅当前 Topic 的在线 Group 的列表中,顯示所有訂閱該Topic的Group。
在订阅当前 Topic 的在线 Group 的列表中,找到目標Group,在其右側操作列,單擊消费详情。
在消費詳情列表,顯示該Topic各個分區的消費詳情。
參數
說明
分区 ID
該Topic分區的ID。
客户端
即時訂閱該Topic的線上Consumer。
說明取值格式為
<Client ID>_/<IP>
。非線上消費端則無法查看用戶端資訊。
最大位点
該Topic在當前分區下的最大訊息消費位點。
消费位点
該Topic在當前分區下的訊息消費位點。
堆积量
當前分區下的訊息堆積總量,即最大位點減去消費位點的值。
重要堆積總量是一個關鍵計量,如果發現堆積總量較大,則應用消費端可能產生了阻塞,或者消費速度跟不上生產速度。此時需要分析消費端的健全狀態,提升消費速度。更多資訊,請參見重設消費位點。
查看Group訂閱的Topic
在实例列表頁面,單擊目標執行個體名稱。
在左側導覽列,單擊Group 管理。
在Group 管理頁面,單擊目標Group ID。
在Topic列表,找到目標Topic,在其右側操作列,單擊消费详情。
在消費詳情列表,顯示該Group在相應Topic的各個分區的消費詳情。
參數解釋請參見上文。
常見問題
為什麼Kafka分區訊息堆積,下遊消費卻無異常?
下遊可能採用了assign
消費模式,位點是您自己管理的。這種情況下雖然顯示了堆積,實際上您可能已經消費了,但是沒有提交位點。建議您及時手動提交位點解決訊息堆積問題。
訊息消費速率小於生產速率導致訊息堆積時,如何增加消費能力?
可以通過提升消費能力的方式來緩解,有以下兩種方案:
增加Consumer執行個體個數。可以在進程內直接增加(需要保證每個執行個體對應一個線程),也可以部署多個消費執行個體進程。需要注意的是,執行個體個數超過分區數量後就不再能提高速度,否則將會有消費執行個體不工作。
增加消費線程。更多資訊,請參見提高消費速度。
有訊息堆積就一定是出現問題了嗎?
不一定。一般分為以下三種情況:
最近消費時間與目前時間接近,並且堆積量保持在一個穩定的數值之間波動,沒有持續擴大。說明用戶端一直在拉取最新訊息,沒有訊息堆積,屬於正常情況。
堆積量逐步擴大,並且訊息位點一直不變。用戶端的消費線程因為某些原因卡住,沒有繼續消費,也沒有繼續向服務端提交位點,屬於異常情況,即訊息的確堆積了。
更多資訊,請參見使用雲訊息佇列 Kafka 版時出現訊息堆積。
相關文檔
如果您希望通過API方式查詢消費狀態,請參見GetConsumerProgress - 查詢消費組消費狀態。
如果您暫時不想處理堆積的訊息,可以通過重設消費位點的方式跳過堆積訊息。