當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 - 查詢消費組消費狀態。
如果您暫時不想處理堆積的消息,可以通過重置消費位點的方式跳過堆積消息。