精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

生產事故!Kafka 消費延遲十小時,我用這三招起死回生

開發 架構
Kafka雖然強大,但也不是萬能的。當遇到消費延遲問題時,不要慌,先冷靜分析原因,從消費者、生產者、業務處理三個維度去排查。

兄弟們,凌晨兩點,手機像被踩了尾巴的貓一樣狂震。我迷迷糊糊摸到手機,鎖屏上跳出運維監控群的99+消息——某核心業務的Kafka消費延遲突破10小時大關,像脫韁的野馬在報警大屏上狂奔。作為負責這個系統的背鍋俠,我瞬間清醒,套上拖鞋就往公司趕,心里暗罵:“Kafka你個老六,平時挺穩當的,怎么突然給我整這出?”

一、事故現場:當訂單堆積成“珠穆朗瑪”

到公司打開監控頁面,好家伙,Kafka消費組的Lag數值像坐了火箭,直接竄到120萬條。再看業務系統,訂單處理模塊的吞吐量幾乎歸零,數據庫里待處理的訂單表像個被吹脹的氣球,隨時可能爆炸。客服部門已經傳來戰報,用戶投訴量直線上升,說下單后半天收不到確認短信,還以為自己遇到了詐騙APP。

趕緊連到Kafka服務器,用kafka-consumer-groups.sh命令一查,發現問題出在某個關鍵Topic的消費組上。這個Topic平時承載著用戶下單、支付、物流等核心事件,下游有10多個消費者組在消費,偏偏我們這個組掉了鏈子。再仔細看消費者實例,明明配置了8個實例,怎么每個實例的消費速率都低得可憐?每秒處理量不到200條,而生產端的消息寫入速率可是穩定在5000條/秒,這就好比一個水龍頭開得嘩嘩響,下面接水的杯子卻只有針眼大,不堵才怪。

抽絲剝繭:到底是誰拖了后腿?

剛開始懷疑是網絡問題,畢竟之前有過機房交換機故障導致吞吐量下降的先例。但登錄服務器一查,網卡流量連峰值的10%都沒到,帶寬穩穩的。再看CPU和內存,CPU利用率倒是不低,平均在70%左右,但內存還有一大半空閑,難道是CPU瓶頸?

不對啊,我們的消費者實例用的可是4核8G的配置,按理說處理這種量級的消息不該這么吃力。突然想到,Kafka消費者的性能和分區分配有很大關系。用list-consumer-groupsdescribe-consumer-groups命令一看,好家伙,8個消費者實例,居然有2個實例各分到了20個分區,剩下6個實例只分到5個分區。這就好比班里分作業,有的同學抱了一摞,有的同學卻只拿到可憐的幾本,忙的忙死,閑的閑死。

再深入分析消費者的日志,發現大量的時間花在了反序列化和業務處理上。我們用的是Avro序列化格式,按道理反序列化效率不低,但業務處理里有個坑:每處理一條消息,都要去調用3個不同的微服務接口,而且還是串行調用,每個接口的平均耗時居然超過200ms。這就相當于你吃個漢堡,非要先去買面包,再去煎肉餅,最后去摘生菜,每一步都得等上半天,效率能高才怪。

二、第一招:讓消費者“多線程搬磚”

既然問題出在分區分配不均和處理效率上,那就先從消費者的并行度下手。Kafka的消費者是通過分區來并行消費的,每個分區只能被同一個消費組中的一個消費者實例處理,所以合理分配分區是關鍵。

1. 調整分區分配策略

默認的分區分配策略是RangeAssignor,這種策略在分區數量不能被消費者實例數整除時,容易導致分配不均。比如我們有100個分區,8個消費者,100÷8=12余4,前4個消費者會分到13個分區,后4個分到12個。雖然這次的分配更離譜,但本質還是分配策略的問題。我們換成RoundRobinAssignor,它會把分區按順序輪流分配給消費者,能更均勻一些。

修改消費者配置,加上partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor,然后重啟消費者實例。神奇的事情發生了,每個實例分到的分區數基本一致,再也沒有“勞模”和“摸魚黨”之分了。

2. 增加消費者實例數

既然分區數量是100個,那消費者實例數最好和分區數匹配,或者是分區數的因數。我們之前用8個實例,和100不匹配,那就加到20個實例,這樣每個實例分到5個分區,壓力均勻多了。這里要注意,消費者實例數不能超過分區數,否則多余的實例會閑置。

3. 優化業務處理線程池

消費者處理消息是在poll循環里,默認是單線程處理。我們的業務處理耗時太長,必須用多線程來加速。在消費者的回調函數里,把消息丟到一個線程池里異步處理,這樣poll可以盡快去取下一批消息,不會被阻塞。

ExecutorService executor = Executors.newFixedThreadPool(10);
while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));
    for (ConsumerRecord<String, String> record : records) {
        executor.submit(() -> processMessage(record));
    }
    consumer.commitAsync();
}

這里要注意線程池的大小不能太大,否則會占用太多資源,一般設置為CPU核心數的2倍左右比較合適。另外,異步處理時要做好異常處理,避免消息處理失敗后丟失。

三、第二招:給Kafka“松綁”,別讓它“背鍋”

處理完消費者端的問題,發現延遲下降了一些,但還是在5小時左右徘徊。這時候意識到,可能生產者端也有問題,或者Kafka本身的配置需要優化。

1. 檢查生產者批次大小

登錄生產者服務器,查看配置,發現batch.size設置得太小,只有16KB。Kafka生產者會把消息攢成批次發送,批次太小會導致發送頻率過高,網絡開銷增大。我們把它調到160KB,這樣每次發送的消息更多,效率更高。不過也不能調得太大,否則會增加延遲,需要根據實際情況平衡。

2. 調整消費者拉取參數

消費者端的fetch.maxBytesfetch.max等待時間也很重要。默認fetch.maxBytes是50MB,可能太大了,導致消費者每次拉取需要處理很久。我們調到10MB,同時把fetch.max.wait.ms從500ms調到200ms,讓消費者在沒有足夠數據時不用等太久,及時處理已有的數據。

3. 清理無效的舊數據

查看Kafka Topic的配置,發現retention.hours設置為72小時,但我們的業務其實只需要保留24小時的數據。大量的舊數據堆積在磁盤上,不僅占用空間,還會影響消費者的拉取速度。趕緊修改配置,執行kafka-topics.sh --alter --topic my_topic --config retention.hours=24,然后等待Kafka自動清理舊數據。不過要注意,清理過程中可能會對性能有一定影響,最好選擇業務低峰期操作。

四、第三招:給消息處理“減肥”,拒絕“無效勞動”

經過前兩招,延遲已經降到了2小時,但離我們的目標還有差距。這時候必須深入業務處理邏輯,看看有沒有可以優化的地方。

1. 合并微服務調用

之前每處理一條消息,都要串行調用3個微服務接口,總耗時超過600ms。其實這3個接口之間沒有嚴格的依賴關系,可以改成并行調用。用CompletableFuture來實現異步并行調用,然后合并結果。

CompletableFuture<Result1> future1 = CompletableFuture.supplyAsync(() -> callService1());
CompletableFuture<Result2> future2 = CompletableFuture.supplyAsync(() -> callService2());
CompletableFuture<Result3> future3 = CompletableFuture.supplyAsync(() -> callService3());

CompletableFuture.allOf(future1, future2, future3).join();
Result1 result1 = future1.get();
Result2 result2 = future2.get();
Result3 result3 = future3.get();

這樣總耗時降到了200ms左右,效率提升了3倍。

2. 增加本地緩存

有些頻繁調用的基礎數據,比如商品類目、用戶等級等,每次都去數據庫查詢,耗時很長。我們在消費者實例里增加了本地緩存,用Caffeine緩存,設置5分鐘的過期時間,減少數據庫訪問次數。這就好比你每天上班都要帶鑰匙,每次回家都要翻包找,不如在門口裝個密碼鎖,直接輸入密碼更快捷。

3. 跳過無效消息

通過監控發現,有一部分消息是重復的或者狀態無效的,比如已經取消的訂單再次發送確認消息。我們在消息處理前增加了一個過濾環節,先檢查消息的狀態,如果是無效的,直接跳過,不進行后續處理。這就像分揀快遞,先把明顯破損或者地址錯誤的包裹挑出來,剩下的再慢慢處理,效率自然提高。

五、勝利時刻:延遲從10小時到30分鐘的逆襲

經過這三招組合拳,凌晨五點,監控頁面上的Lag數值開始穩步下降,像泄了氣的氣球一樣,到早上八點,已經降到了30分鐘以內,吞吐量也恢復到了每秒5000條以上,和生產端基本持平。再看業務系統,訂單處理終于跟上了節奏,數據庫里的積壓訂單也慢慢消化完了。

六、復盤總結:這些坑以后別再踩

  1. 分區分配要均衡:根據分區數量合理設置消費者實例數,選擇合適的分配策略,避免“勞逸不均”。
  2. 業務處理要輕量:盡量減少同步阻塞操作,能用異步并行的就別串行,能緩存的就別頻繁查數據庫。
  3. 參數配置要調優:生產者和消費者的參數不是一成不變的,要根據實際吞吐量和延遲情況動態調整,比如batch.sizefetch.maxBytes等。
  4. 監控報警要完善:這次事故能及時發現,多虧了完善的監控體系。以后要繼續優化監控指標,比如消費者延遲、吞吐量、CPU內存使用率等,設置合理的報警閾值。

Kafka雖然強大,但也不是萬能的。當遇到消費延遲問題時,不要慌,先冷靜分析原因,從消費者、生產者、業務處理三個維度去排查。記住,沒有最好的配置,只有最適合自己業務的配置。平時多做壓力測試,模擬高并發場景,提前發現潛在問題,才能在生產事故來臨時不慌不亂,從容應對。

責任編輯:武曉燕 來源: 石杉的架構筆記
相關推薦

2018-05-17 11:24:24

主機藍屏重啟

2011-05-03 11:13:51

黑盒

2024-04-17 08:21:44

2021-04-13 07:02:15

VRAR虛擬現實技術

2011-12-25 20:28:10

諾基亞

2020-09-07 08:42:13

宕機業務運維

2010-08-18 16:16:44

路由器啟動

2010-05-17 13:02:07

蘋果IBM惠普

2025-02-28 06:23:38

2018-01-11 10:54:45

人工智能納米科技復活術

2022-04-27 09:55:12

Linux誤刪文件

2018-07-24 15:28:24

2011-05-05 17:51:36

硒鼓

2022-02-28 09:41:42

芯片電池開發

2023-11-28 21:53:55

滴滴效益事故

2024-07-17 08:25:44

2025-07-08 09:20:02

2023-06-05 18:12:57

數據庫刪除中斷

2011-05-05 09:27:07

傳真機CCD

2022-06-30 19:40:36

查詢接口索引優化
點贊
收藏

51CTO技術棧公眾號

国产精品精品一区二区三区午夜版| 亚洲精品一区二区三区在线观看 | 亚洲av无码乱码在线观看性色| 欧美精品偷拍| 亚洲女人天堂av| 欧美日韩理论片| 日本乱码一区二区三区不卡| 日韩一区在线免费观看| 精品国产一区二区三区四区vr | 国产真实乱在线更新| 国产伦理久久久久久妇女| 欧美伊人久久久久久久久影院| 成人午夜免费剧场| 国产日韩精品在线看| 成人永久aaa| 91精品久久久久久久久中文字幕| 国产美女激情视频| 欧美91大片| 伊人久久久久久久久久久| 成人午夜精品无码区| 欧美视频精品| 色老综合老女人久久久| 久久在线中文字幕| 欧美精品videos另类| 久久综合色一综合色88| **亚洲第一综合导航网站| 波多野结衣小视频| 中文一区二区| 国内外成人免费激情在线视频网站| 亚洲一二三四五六区| 精品一区欧美| 亚洲精品视频播放| 男人的天堂影院| 日韩一二三区| 欧美夫妻性生活| 性chinese极品按摩| 中文一区一区三区高中清不卡免费| 一区二区在线观看视频| 亚洲一区二区在线看| 国产在线观看网站| 久久亚洲精品小早川怜子| 国产精品一区二区三区观看| 国产国语亲子伦亲子| 久久99国产精品麻豆| 国产精品视频一| 欧美成人精品网站| 日韩黄色小视频| 国产99视频精品免视看7| 免费看一级视频| 香蕉久久夜色精品国产| 久久久伊人日本| 国产无码精品一区二区| 黄色综合网站| 性欧美办公室18xxxxhd| 日韩三级av在线| 亚洲国产精品第一区二区三区 | 国产真实乱人偷精品视频| 亚洲精品二区三区| 欧美大秀在线观看| 国产真实夫妇交换视频| 国产精品日本| 日韩女优在线播放| 中文字幕 国产| 九九久久精品视频| 亚洲综合小说区| 人妻一区二区三区四区| 91老司机福利 在线| 秋霞毛片久久久久久久久| 成年人在线免费观看| 国产精品成人免费精品自在线观看| 正在播放一区二区三区| 在线中文字幕-区二区三区四区| 亚洲激情网站免费观看| 男女视频网站在线观看| 欧美激情喷水| 6080午夜不卡| 成人啪啪18免费游戏链接| 你懂的在线观看一区二区| 亚洲人成在线观看网站高清| 一级免费黄色录像| 亚洲高清毛片| 国产极品精品在线观看| 国产精品高潮呻吟av| 成人在线综合网站| 日韩一二三区不卡在线视频| 国产婷婷视频在线| 欧美性xxxx极品高清hd直播| 91极品视频在线观看| 日韩欧美高清一区二区三区| 亚洲精品小视频在线观看| 99热6这里只有精品| 亚洲黄色视屏| 国产欧美欧洲在线观看| 无码h黄肉3d动漫在线观看| 国产精品日韩成人| 性高湖久久久久久久久aaaaa| 成人激情综合| 欧美成人激情免费网| 精品人妻互换一区二区三区| 女人香蕉久久**毛片精品| 欧美性受xxxx黑人猛交| 国产丝袜视频在线观看| 国产三级精品在线| 久久综合久久网| 成人豆花视频| 亚洲天堂精品在线| 国产主播在线观看| 美女视频黄a大片欧美| 精品国产中文字幕| 超碰在线caoporen| 欧美三电影在线| 国产呦小j女精品视频| 欧美日韩 国产精品| 国产精品免费一区| 五月天婷婷社区| 伊人色综合久久天天| 国产一级片自拍| 精品国产欧美日韩| 4p变态网欧美系列| 欧美特级特黄aaaaaa在线看| 亚洲欧美成aⅴ人在线观看| 密臀av一区二区三区| 日韩大胆成人| 欧美黄色三级网站| 国产内射老熟女aaaa∵| 国产蜜臀av在线一区二区三区| 欧美日韩二三区| av成人综合| 欧美大片免费看 | 精品电影一区二区三区| 成年人二级毛片| 寂寞少妇一区二区三区| 色播亚洲视频在线观看| free欧美| 日韩成人中文电影| 国产女同在线观看| 成人av网址在线| 成人一级生活片| 美女精品久久| 欧美精品做受xxx性少妇| 国产欧美第一页| 亚洲欧美偷拍卡通变态| 17c国产在线| 国产精品麻豆久久| 成人福利视频在线观看| 日本成人网址| 91精品国产欧美一区二区成人| 国精产品视频一二二区| 久久成人av少妇免费| 在线观看欧美一区| 四虎视频在线精品免费网址| 日韩色av导航| 国产日韩欧美视频在线观看| 亚洲女人的天堂| 久久久久久无码精品人妻一区二区| 亚洲欧洲美洲一区二区三区| 亚洲一区中文字幕| 不卡av免费观看| 日韩国产在线播放| 亚洲 欧美 中文字幕| 中文字幕欧美国产| 亚洲精品视频三区| 欧美一区综合| 精品国产免费人成电影在线观...| 激情国产在线| 深夜福利国产精品| 性一交一乱一精一晶| 亚洲第一成人在线| 波多野结衣一本| 喷白浆一区二区| 一本大道东京热无码aⅴ| 中文字幕一区日韩精品 | 四虎免费在线观看视频| 天堂精品久久久久| 2024亚洲男人天堂| 五月香视频在线观看| 欧美一级电影网站| 亚洲黄色小说图片| 国产精品全国免费观看高清| 国产精品99久久久精品无码| 一本久道综合久久精品| 亚洲一区三区在线观看| 伊色综合久久之综合久久| 国产91色在线免费| 91在线中文| 亚洲欧美日韩视频一区| 国产男男gay体育生网站| 欧美日韩一区二区三区 | 国产精品久久久久一区二区国产 | 手机av免费在线观看| 在线视频中文字幕一区二区| 国产女人18水真多毛片18精品| av色综合久久天堂av综合| 97公开免费视频| 国产精品分类| 亚洲午夜高清视频| 欧美午夜寂寞| 99re在线观看视频| 国产精品高潮久久| 91av成人在线| 伊人影院在线视频| 上原亚衣av一区二区三区| 天堂在线观看视频| 91麻豆精品国产91久久久久 | 欧美日韩亚洲国产综合| 日本网站在线免费观看| 中文字幕一区三区| 免费网站在线高清观看| 成人的网站免费观看| www.com污| 老牛国产精品一区的观看方式| 91传媒免费视频| 日韩中字在线| 日本欧洲国产一区二区| 久久97精品| 99三级在线| 国产午夜久久av| 国产在线视频2019最新视频| 成人动漫一区| 8050国产精品久久久久久| 欧美大胆的人体xxxx| 精品国产依人香蕉在线精品| av电影在线网| 国产亚洲精品久久久久久777| 五月天婷婷在线观看| 亚洲成人在线网| 成人乱码一区二区三区| 日韩一区二区三区视频在线观看| 在线不卡免费视频| 在线视频一区二区三区| 波多野结衣在线电影| 色偷偷久久一区二区三区| 国产做受高潮漫动| 亚洲国产精品久久艾草纯爱 | 欧美在线观看视频在线| 欧美a视频在线观看| 激情亚洲一区二区三区四区| 国产对白videos麻豆高潮| 亚洲一区二区四区蜜桃| 九九热视频精品| 亚洲一区二区精品视频| 四虎免费在线视频| 亚洲制服丝袜一区| 国产精品自拍视频一区| 午夜视频一区二区三区| 亚洲免费黄色| 91av在线播放视频| av不卡高清| 午夜精品一区二区三区在线视 | 乌克兰美女av| 免费在线看成人av| 天堂av在线8| 国产乱码精品一区二区三区五月婷| 午夜久久久精品| 精品写真视频在线观看| 日本r级电影在线观看| 国产成人av一区二区三区在线 | 伊人免费视频二| 国产精品一区二区三区99| 国产清纯白嫩初高中在线观看性色| 成人深夜福利app| 3d动漫精品啪啪一区二区下载| 久久久一区二区| www中文在线| 亚洲狠狠丁香婷婷综合久久久| 国语对白一区二区| 欧美香蕉大胸在线视频观看| 波多野结衣黄色| 欧美一级日韩一级| 天堂在线中文| 色哟哟亚洲精品一区二区| 污污网站在线看| 欧美在线国产精品| 欧美伊人亚洲伊人色综合动图| 2022国产精品| 你懂的一区二区三区| 超碰免费在线公开| 亚洲精品偷拍| 污污的视频免费| 成人免费视频视频| 色一情一交一乱一区二区三区| 亚洲手机成人高清视频| 日韩在线视频免费播放| 欧美日韩精品一区二区天天拍小说 | 欧美bbbbb性bbbbb视频| 国产精品另类一区| 国产精品theporn动漫| 欧美亚洲综合久久| 亚洲第一大网站| 亚洲无av在线中文字幕| 欧美xxxbbb| 国产精品视频色| 欧美理伦片在线播放| 亚洲综合网中心| 国产精品永久| 日本一本在线视频| 国产日韩欧美精品一区| 国产一级视频在线| 欧美日本一区二区| 免费国产在线视频| 欧美精品做受xxx性少妇| 成人高清一区| 久久精品国产精品青草色艺| 久久久久蜜桃| 日韩在线第三页| 99久免费精品视频在线观看| 日韩成人毛片视频| 欧美唯美清纯偷拍| 亚洲AV成人无码一二三区在线| 欧美大码xxxx| 欧美一级做一级爱a做片性| 欧美日韩另类综合| 影音先锋在线一区| 宇都宫紫苑在线播放| 国产精品欧美极品| 无码人妻精品一区二区50| 精品国产91九色蝌蚪| 性欧美猛交videos| 成人a视频在线观看| 欧美系列电影免费观看| 超碰网在线观看| 久久综合久久综合久久| 日韩av电影网| 精品播放一区二区| 日韩少妇视频| 波多野结衣精品久久| 一区二区在线| 九九九久久久久久久| 亚洲同性同志一二三专区| 在线观看国产精品视频| 一本色道久久88亚洲综合88| 伊人色综合一区二区三区影院视频| 国产精品有限公司| 在线精品一区| 亚洲色偷偷色噜噜狠狠99网| 亚洲国产精品一区二区久久恐怖片| 国产xxxx在线观看| 九九视频这里只有精品 | 亚洲第一精品福利| 欧美xxxx做受欧美88bbw| 电影午夜精品一区二区三区| 午夜精品久久| 亚洲妇女无套内射精| 一区二区三区免费网站| 亚洲xxxx天美| 午夜精品久久久久久久男人的天堂| 好吊妞视频这里有精品| 激情五月婷婷六月| 国产99久久久久久免费看农村| 精品少妇一二三区| 亚洲国产精彩中文乱码av| 97人澡人人添人人爽欧美| 久久精品国产一区二区三区不卡| 国产精品久久国产愉拍| 加勒比一区二区| 欧美日韩成人综合天天影院 | 色一情一乱一乱一91av| 精品福利视频导航大全| 国产精品无av码在线观看| 国产电影一区二区在线观看| 性一交一黄一片| 精品久久久久久| 91电影在线播放| av日韩免费电影| 噜噜噜在线观看免费视频日韩| 国产黄色录像视频| 欧美一级高清片| 亚洲电影观看| 亚洲一卡二卡三卡| 国产成人精品www牛牛影视| 国产69精品久久久久久久久久| 亚洲天堂av电影| 亚洲网一区二区三区| 5月婷婷6月丁香| 中文字幕在线观看一区| 亚洲黄色在线免费观看| 日韩av成人在线| 91精品国产福利在线观看麻豆| 挪威xxxx性hd极品| 欧美视频中文字幕| 国内高清免费在线视频| 日韩欧美电影一区二区| 国产精品亚洲人在线观看| 欧美一级特黄视频| 日韩一区二区久久久| 成人高潮视频| 一区二区xxx| 天天影视涩香欲综合网| 欧美三级电影一区二区三区| 国产在线欧美日韩| 精品在线免费观看| 一级片中文字幕| 欧美大片va欧美在线播放| 国产99亚洲| 亚洲av无码成人精品区| 在线亚洲人成电影网站色www| 免费在线国产视频| 亚洲一区综合| 久久久夜色精品亚洲| 好男人www在线视频|