kafka rebalance(再均衡)導致的消息積壓分析

起因:

某天,項目組收到大量的kafka消息積壓告警。查看了kafka日志后,發現 kafka不斷地 rebalance(再均衡)。

Rebalance (再均衡):

分區的所有權從一個消費者轉移到另一個消費者,這樣的行為被稱為Rebalance (再均衡).
在再均衡期間,消費者無法消費消息,造成整個群組一小段時間的不可用。

Rebalance 的觸發條件:

  • 當 Consumer Group 組成員數量發生變化
    (1)新成員加入
    (2)組成員主動離開

    (3)組成員崩潰

    • 消費者心跳超時,導致 rebalance。
    • 消費者處理時間過長,導致 rebalance。
  • 當訂閱主題數量發生變化

  • 當訂閱主題的分區數發生變化

日志:

[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Member consumer-anonymous. in group anonymous. has failed, removing it from the group (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Preparing to rebalance group anonymous. in state PreparingRebalance with old generation 1 (__consumer_offsets-5) (reason: removing member consumer-anonymous. on heartbeat expiration) (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] INFO [GroupCoordinator 1]: Group anonymous. with generation 2 is now empty (__consumer_offsets-5) (kafka.coordinator.group.GroupCoordinator)
[2023-12-11 xx:xx:xx] WARN Attempting to send response via channel for which there is no open connection, connection id :9092 (kafka.network.Processor)

原因:

kafka消費消息后,如果業務邏輯處理時間過長,會導致消費線程與 Coordinator(協調器) 的 heartbeat (心跳) 超時,Coordinator 判斷 Consumer 已經宕機,就將 Consumer 從消費組中剔除,并觸發了 Rebalance 機制 。

解決:

優先解決生產問題:先調整參數,避免頻繁 Rebalance。

如果想從根本上解決,還需要優化消費邏輯,提高性能,快速消費完,避免超時。

session.timeout.ms : 心跳超時時間
heartbeat.interval.ms  : 心跳時間間隔
max.poll.interval.ms  : 每次消費的處理時間
max.poll.records  : 每次消費的消息數
  • session.timeout.ms: 心跳超時時間,默認 10s。當心跳超時時間超過 session.timeout.ms ,會認為 Consumer 已退出 ,將 Consumer 從消費組中剔除,觸發 Rebalance 機制。可以適當調大 session.timeout.ms,避免頻繁 Rebalance 。

  • heartbeat.interval.ms : 這個是心跳時間間隔,默認值是:3s。 該值必須小于 session.timeout.ms,否則會超時。

  • max.poll.interval.ms :如果消費端在該間隔內沒有發起 poll 操作,該消費者將被剔除,觸發重平衡,將該消費者分配的隊列分配給其他消費者。默認為 5 分鐘。

  • max.poll.records: 每次消費的時候,獲取多少條消息。默認值為 500。
    獲取的消息條數越多,需要處理的時間越長。所以每次拉取的消息數不能太多,需要保證在 max.poll.interval.ms 設置的時間內能消費完,否則會發生 rebalance。可以適當調小 max.poll.records,避免頻繁 Rebalance 。

參考資料:

https://blog.csdn.net/riemann_/article/details/122484531

https://blog.csdn.net/penriver/article/details/121556161

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214865.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

修改汽車的控制系統實現自動駕駛,基于一個開源的汽車駕駛輔助系統實現全自動駕駛

修改汽車的控制系統實現自動駕駛,基于一個開源的汽車駕駛輔助系統實現全自動駕駛。 自動駕駛汽車依靠人工智能、視覺計算、雷達、監控裝置和全球定位系統協同合作,讓電腦可以在沒有任何人類主動的操作下,自動安全地操作機動車輛。 演示視頻: Openpilot :一個開源的汽車駕…

Socks5代理與代理IP的技術創新

隨著全球市場的開放和跨界電商的崛起,企業在出海過程中面臨著復雜多變的網絡環境和地域限制。在這一背景下,Socks5代理和代理IP等技術應運而生,成為助力企業突破網絡壁壘、實現出海目標的重要工具。本文將深入探討Socks5代理和代理IP在跨界電…

OpenSSL 3.x爆出漏洞,如何妥善應對?

10月25日,OpenSSL項目團隊發布了OpenSSL 3.x版中一個關鍵安全漏洞的修復程序。該修復程序已于11月1日正式發布。 由于OpenSSL有著極為廣泛的使用,該公告引起了很大反響。Akamai希望能通過本文幫助相關用戶了解情況,介紹有關檢測和緩解威脅的…

怎么消除視頻中所有的聲音?方法很簡單

當我們想把視頻中去掉聲音,可能有多種原因,也許需要制作一個無聲視頻,或者想在視頻中添加自己的音樂或解說,特別是一些搞笑解說,無論原因是什么,到底要怎么把視頻中所有的聲音都去除呢? 小編給…

計算機畢業設計 基于Web的網上購物系統(pc端仿淘寶系統)的設計與實現 Java實戰項目 附源碼+文檔+視頻講解

博主介紹:?從事軟件開發10年之余,專注于Java技術領域、Python人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者? 🍅文末獲取源碼聯系🍅 👇🏻 精…

SVN優缺點詳解及版本控制系統選型建議

Subversion (SVN)是目前可用的眾多版本控制選項之一。本篇文章將全面概述什么是 SVN、SVN的歷史、SVN存儲庫是什么,以及在切換到SVN之前您應該謹慎考慮的潛在問題。 什么是Subversion(SVN)? Subversion軟件,也稱為SV…

管理類聯考——數學——真題篇——按知識分類——代數

文章目錄 2023真題(2023-09)-代數-一元二次方程-注意絕對值的有效性真題(2023-17)-代數-一元二次方程-舉反例真題(2023-18)-數列-等比數列真題(2023-24)-數列-等比數列2022真題(2022-03)-代數-整式-因式分解真題(2022-19)-數列-等比數列真題(2022-21)-數列-等比數…

Docker的常用命令(沒有廢話)

目錄 鏡像 鏡像管理命令 鏡像構建命令 鏡像標簽和推送命令 其他命令 容器 運行容器 停止和刪除容器 查看容器信息 進入容器 數據卷 列出卷 創建和刪除卷 將卷掛載到容器 鏡像 鏡像管理命令 docker images # 列出本地所有的鏡像 docker search <關鍵詞> #…

使用pe安裝windows操作系統

一、系統安裝前準備工作&#xff0c;制作系統盤 &#xff08;1&#xff09;拷貝電腦上的資料 &#xff08;2&#xff09;準備一個至少8G的U盤 &#xff08;3&#xff09;下載windows鏡像文件及pe軟件 通過百度網盤可下載下列軟件及鏡像 windows鏡像文件&#xff08;百度網盤…

知識筆記(五十二)———MySQL 安裝

Linux/UNIX 上安裝 MySQL Linux平臺上推薦使用RPM包來安裝Mysql,MySQL AB提供了以下RPM包的下載地址&#xff1a; MySQL - MySQL服務器。你需要該選項&#xff0c;除非你只想連接運行在另一臺機器上的MySQL服務器。MySQL-client - MySQL 客戶端程序&#xff0c;用于連接并操作…

Kotlin 中的 `as` 關鍵字:類型轉換的藝術

在 Android 編程中&#xff0c;類型轉換是一項常見的操作。為了使這一過程更加流暢和安全&#xff0c;Kotlin 提供了 as 關鍵字。本文將深入探討 as 關鍵字的用法和最佳實踐。 一、as 關鍵字的基本概念 &#x1f680; as 關鍵字在 Kotlin 中用于顯式類型轉換。它將一個表達式…

vue零基礎

vue 與其他框架的對比 框架設計模式數據綁定靈活度文件模式復雜性學習曲線生態VueMVVM雙向靈活單文件小緩完善ReactMVC單向較靈活all in js大陡豐富AngularMVC雙向固定多文件較大較陡&#xff08;Typescript&#xff09;獨立 更多對比細節&#xff1a;vue 官網&#xff1a;ht…

matplotlib繪圖時show函數需在save函數后

matplotlib繪圖時&#xff0c;先調用show&#xff0c;后調用save函數保存圖像&#xff0c;否則無法保存圖像信息 figsize 23,10 #fig, axes plt.subplots(nrows1, ncols2) fig, axs plt.subplots(4, 3, sharexcol,shareyrow,figsizefigsize) # 在每個子圖中繪制一個圖形 pi…

2023-12-05 Qt學習總結3

點擊 <C 語言編程核心突破> 快速C語言入門 Qt學習總結 前言九 QObject基類十 QWidget基類十一 QMainWindow類總結 前言 要解決問題: 學習qt最核心知識, 多一個都不學. 九 QObject基類 QObject是Qt中最基本的類&#xff0c;所有Qt中的對象都從該基類派生而來。 QObjec…

Hbase2.5.5分布式部署安裝記錄

文章目錄 1 環境準備1.1 節點部署情況1.2 安裝說明 2 Hbase安裝過程Step1&#xff1a;Step2:Step3:Step4&#xff1a; 3 Web UI檢查狀態并測試3.1 Web UI3.2 創建測試命名空間 1 環境準備 1.1 節點部署情況 Hadoop11&#xff1a;Hadoop3.1.4 、 zookeeper3.4.6、jdk8 Hadoop1…

JOSEF 靜態延時中間繼電器 JZS-7G/42 DC110V 導軌安裝

系列型號&#xff1a; JZS-7G-57端子排延時中間繼電器&#xff1b; JZS-7G-42X端子排延時中間繼電器&#xff1b; JZS-7G-22X端子排延時中間繼電器&#xff1b; JZS-7G-21端子排延時中間繼電器&#xff1b; JZS-7G-41端子排延時中間繼電器&#xff1b; JZS-7G-51端子排延…

git bash查看遠程倉庫地址

進入代碼路徑 git remote -vgit remote -v

MySQL執行語句 Table ‘mysql.servers‘ doesn‘t exist

執行語句報錯&#xff1a; mysql> flush privileges; ERROR 1146 (42S02): Table mysql.servers doesnt exist解決&#xff1a; 進入數據庫 刪除servers表 mysql> use mysql Database changed mysql> drop table if exists servers; Query OK, 0 rows affected, …

IoTDB服務安裝教程-單機版

文章目錄 單機版&#xff08;試用&#xff09;下載地址安裝環境安裝JDK設置最大文件打開數為 65535 安裝服務目錄結構如下啟動 IoTDB使用 Cli 工具IoTDB 的基本操作創建數據庫查看所有數據庫創建時間序列插入時間序列數據查詢數據退出會話 停止 IoTDB 單機版&#xff08;試用&a…

Day06(上) Liunx高級系統設計6-消息隊列

概述 消息隊列是消息的鏈表&#xff0c;存放在內存中&#xff0c;由內核維護 特點 1 、消息隊列中的消息是有類型的。 2 、消息隊列中的消息是有格式的。 3 、消息隊列可以實現消息的隨機查詢。消息不一定要以先進先出的次序讀取&#xff0c;編程時可以按消息的類型讀取。 …