国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何應對 RocketMQ 消息堆積

開發(fā) 前端
想要避免和解決消息堆積問題,必須合理的控制消費耗時和消息并發(fā)度,其中消費耗時的優(yōu)先級高于消費并發(fā)度,必須先保證消費耗時的合理性,再考慮消費并發(fā)度問題。

這篇文章,我們聊聊如何應對 RocketMQ 消息堆積。

圖片圖片

1 基礎概念

消費者在消費的過程中,消費的速度跟不上服務端的發(fā)送速度,未處理的消息會越來越多,消息出現(xiàn)堆積進而會造成消息消費延遲。

雖然筆者經(jīng)常講:RocketMQ 、Kafka 具備堆積的能力,但是以下場景需要重點關注消息堆積和延遲的問題:

  1. 業(yè)務系統(tǒng)上下游能力不匹配造成的持續(xù)堆積,且無法自行恢復。
  2. 業(yè)務系統(tǒng)對消息的消費實時性要求較高,即使是短暫的堆積造成的消息延遲也無法接受。

2 消費原理

圖片圖片

客戶端使用 Push 模式 啟動后,消費消息時,分為以下兩個階段:

  • 階段一:拉取消息客戶端通過長輪詢批量拉取的方式從 Broker 服務端獲取消息,將拉取到的消息緩存到本地緩沖隊列中。客戶端批量拉取消息,常見內(nèi)網(wǎng)環(huán)境下都會有很高的吞吐量,例如:1個單線程單分區(qū)的低規(guī)格機器(4C8GB)可以達到幾萬 TPS ,如果是多個分區(qū)可以達到幾十萬 TPS 。所以這一階段一般不會成為消息堆積的瓶頸。
  • 階段二:消費消息提交消費線程,客戶端將本地緩存的消息提交到消費線程中,使用業(yè)務消費邏輯進行處理。此時客戶端的消費能力就完全依賴于業(yè)務邏輯的復雜度(消費耗時)和消費邏輯并發(fā)度了。如果業(yè)務處理邏輯復雜,處理單條消息耗時都較長,則整體的消息吞吐量肯定不會高,此時就會導致客戶端本地緩沖隊列達到上限,停止從服務端拉取消息。

通過以上客戶端消費原理可以看出,消息堆積的主要瓶頸在于本地客戶端的消費能力,即消費耗時和消費并發(fā)度。

想要避免和解決消息堆積問題,必須合理的控制消費耗時和消息并發(fā)度,其中消費耗時的優(yōu)先級高于消費并發(fā)度,必須先保證消費耗時的合理性,再考慮消費并發(fā)度問題。

3 消費瓶頸

3.1 消費耗時

影響消費耗時的消費邏輯主要分為 CPU 內(nèi)存計算和外部 I/O 操作,通常情況下代碼中如果沒有復雜的遞歸和循環(huán)的話,內(nèi)部計算耗時相對外部 I/O 操作來說幾乎可以忽略。

外部 I/O 操作通常包括如下業(yè)務邏輯:

  • 讀寫外部數(shù)據(jù)庫,例如 MySQL 數(shù)據(jù)庫讀寫。
  • 讀寫外部緩存等系統(tǒng),例如 Redis 讀寫。
  • 下游系統(tǒng)調(diào)用,例如 Dubbo 調(diào)用或者下游 HTTP 接口調(diào)用。

這類外部調(diào)用的邏輯和系統(tǒng)容量需要提前梳理,掌握每個調(diào)用操作預期的耗時,這樣才能判斷消費邏輯中I/O操作的耗時是否合理。

通常消費堆積都是由于這些下游系統(tǒng)出現(xiàn)了服務異常、容量限制導致的消費耗時增加。

例如:某業(yè)務消費邏輯中需要調(diào)用下游 Dubbo 接口 ,單次消費耗時為 20 ms,平時消息量小未出現(xiàn)異常。業(yè)務側(cè)進行大促活動時,下游 Dubbo 服務未進行優(yōu)化,消費單條消息的耗時增加到 200 ms,業(yè)務側(cè)可以明顯感受到消費速度大幅下跌。此時,通過提升消費并行度并不能解決問題,需要大幅提高下游 Dubbo 服務性能才行。

3.2 消費并發(fā)度

絕大部分消息消費行為都屬于 IO 密集型,即可能是操作數(shù)據(jù)庫,或者調(diào)用 RPC,這類消費行為的消費速度在于后端數(shù)據(jù)庫或者外系統(tǒng)的吞吐量,通過增加消費并行度,可以提高總的消費吞吐量,但是并行度增加到一定程度,反而會下降。

所以,應用必須要設置合理的并行度。如下有幾種修改消費并行度的方法:

  • 同一個 ConsumerGroup 下,通過增加 Consumer 實例數(shù)量來提高并行度(需要注意的是超過訂閱隊列數(shù)的 Consumer 實例無效)。可以通過加機器,或者在已有機器啟動多個進程的方式。
  • 提高單個 Consumer 實例的消費并行線程,通過修改參數(shù) consumeThreadMin、consumeThreadMax 實現(xiàn)。

4 解決策略

當面對消息堆積問題時,我們需要明確到底哪個環(huán)節(jié)出現(xiàn)問題了,不要慌張,也不要貿(mào)然動手。

4.1 確認消息的消費耗時是否合理

首先,我們需要查看消費耗時,確認消息的消費耗時是否合理。查看消費耗時一般來講有兩種方式:

1、打印日志

public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
     try {
        for (MessageExt messageExt : msgs) {
           long start = System.currentTimeMillis();
           // TODO 業(yè)務邏輯
          logger.info("MessageId:" + messageExt.getMsgId() + " costTime:" + (System.currentTimeMillis() - start));
        }
        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
     } catch (Exception e) {
        logger.error("consumeMessage error:", e);
        return ConsumeConcurrentlyStatus.RECONSUME_LATER;
     }
}

2、查看消息軌跡

圖片圖片

當確定好消費耗時后,可以根據(jù)耗時大小,采取不同的措施。

  • 若查看到消費耗時較長,則需要查看客戶端 JVM 堆棧信息排查具體業(yè)務邏輯,并優(yōu)化消費邏輯。
  • 若查看到消費耗時正常,則有可能是因為消費并發(fā)度不夠?qū)е孪⒍逊e,需要逐步調(diào)大消費線程或擴容節(jié)點來解決。

4.2 查看客戶端 JVM 的堆棧

假如消費耗時非常高,需要查看 Consumer 實例 JVM 的堆棧 。

  1. 通過 jps -m 或者 ps -ef | grep java 命令獲取當前正在運行的 Java 程序,通過啟動主類即可獲得應用的進程 pid ;
  2. 通過 jstack pid > stack.log 命令獲取線程的堆棧。
  3. 執(zhí)行以下命令,查看 ConsumeMessageThread 的信息 。
cat stack.log | grep ConsumeMessageThread -A 10 --color

常見的異常堆棧信息如下:

  • 示例1:空閑無堆積的堆棧 。消費空閑情況下消費線程都會處于 WAITING 狀態(tài)等待從消費任務隊里中獲取消息。

圖片圖片

  • 示例2:消費邏輯有搶鎖休眠等待等情況 。消費線程阻塞在內(nèi)部的一個睡眠等待上,導致消費緩慢。

圖片圖片

  • 示例3:消費邏輯操作數(shù)據(jù)庫等外部存儲卡住 。消費線程阻塞在外部的 HTTP 調(diào)用上,導致消費緩慢。

圖片圖片

5 總結

客戶端使用 Push模式 啟動后,消費消息時,分為以下兩個階段:拉取消息和消費消息。

客戶端消費原理可以看出,消息堆積的主要瓶頸在于本地客戶端的消費能力,即消費耗時和消費并發(fā)度。

首先分析消費耗時,然后根據(jù)耗時大小,采取不同的措施。

  • 若查看到消費耗時較長,則查看客戶端堆棧信息排查具體業(yè)務邏輯,并優(yōu)化消費邏輯。
  • 若查看到消費耗時正常,則有可能是因為消費并發(fā)度不夠?qū)е孪⒍逊e,需要逐步調(diào)大消費線程或擴容節(jié)點來解決。

參考文檔:

阿里云官方文檔:

https://help.aliyun.com/zh/apsaramq-for-rocketmq/cloud-message-queue-rocketmq-4-x-series/use-cases/message-accumulation-and-latency#concept-2004064

責任編輯:武曉燕 來源: 勇哥Java實戰(zhàn)
相關推薦

2024-07-29 00:01:00

RabbitMQ消息堆積

2021-11-23 09:00:59

消息堆積擴容RocketMQ

2022-11-08 07:36:17

RocketMQ消費者消息堆積

2022-03-31 08:26:44

RocketMQ消息排查

2021-11-08 15:38:15

消息延遲堆積

2024-08-06 09:55:25

2021-10-26 08:22:38

消息堆積擴容RocketMQ

2024-02-04 09:02:29

RocketMQ項目處理器

2021-02-02 11:01:31

RocketMQ消息分布式

2023-12-15 13:08:00

RocketMQ中間件消費順序

2024-11-11 13:28:11

RocketMQ消息類型FIFO

2024-10-29 08:34:27

RocketMQ消息類型事務消息

2019-01-25 13:22:50

RocketMQ數(shù)據(jù)處理

2022-12-22 10:03:18

消息集成

2021-04-27 07:52:18

RocketMQ消息投遞

2023-07-18 09:03:01

RocketMQ場景消息

2023-07-17 08:34:03

RocketMQ消息初體驗

2025-04-09 08:20:00

RocketMQ消息隊列開發(fā)

2022-06-02 08:21:07

RocketMQ消息中間件
點贊
收藏

51CTO技術棧公眾號

日本.亚洲电影| 国产青青视频| 亚洲精品视频免费| 高清一区二区三区视频| 久久日本片精品aaaaa国产| 午夜精品视频在线观看| 欧美精品中文字幕一区二区| 宅男在线一区| 国产一区二区三区精品久久久| 精品久久av| 国产精品五月天| 一级全黄肉体裸体全过程| 国内在线观看一区二区三区| 色七七影院综合| 美女精品导航| 色婷婷国产精品综合在线观看| 超碰在线播放91| 国产成人欧美日韩在线电影| 鲁丝片一区二区三区| 欧美电影三区| 国产成人精品日本亚洲专区61| 亚洲不卡系列| 日韩成人在线观看| 日本亚洲精品| 色欲综合视频天天天| www.99com| www.亚洲色图| 日韩精品久久一区二区| 久久综合中文| 九九99玖玖| 这里只有精品在线| 国产免费一区视频观看免费| 在线日本制服中文欧美| 欧美激情中文网| 国产aⅴ精品一区二区四区| 一区二区三区久久精品| 亚州一区二区三区| 国产亚洲aⅴaaaaaa毛片| 2021中文字幕在线| 精品国产电影一区二区 | 久久悠悠精品综合网| 最近中文字幕mv在线一区二区三区四区 | 国产日韩一区| www 成人av com| 精品999日本| 免费不卡亚洲欧美| 免费成人av在线| 正义之心1992免费观看全集完整版| 亚洲欧美视频一区二区三区| 国产午夜精品在线| 国产人妻人伦精品| 日韩视频在线你懂得| 午夜毛片在线| 亚洲一区二区高清视频| 欧美一级视频在线播放| 免费成人av资源网| 欧美一级中文字幕| 波多野结衣在线一区| 男人日女人逼逼| 久久青草欧美一区二区三区| 综合欧美一区二区三区| 久久久伊人欧美| theporn国产在线精品| 欧美亚洲国产日韩2020| 日韩精品不卡一区二区| 国产精品久久久久久免费观看| 狠狠爱成人网| 正在播放久久| 国产女同性恋一区二区| 在线看三级网站视频| 警花观音坐莲激情销魂小说| 天堂精品在线视频| 97国产精品视频人人做人人爱| 亚洲亚洲免费| 99国产高清| 日本一区中文字幕| 国产精品69久久久| 国产精品久久久久四虎| 欧美新色视频| 日韩精品欧美激情| 99re8这里有精品热视频免费 | 美女毛片一区二区三区四区| 国产美女搞久久| 母乳一区在线观看| www.成年人视频| 一区二区视频免费在线观看| 免费在线黄色影片| 亚洲精品久久久一区二区三区 | 亚洲视频欧洲视频| 成人污污视频| 国产精品影片在线观看| 丝瓜av网站精品一区二区 | 欧美亚一区二区| 日韩激情电影免费看| 91av视频在线观看| 国产精品久久久久久久久久妞妞 | 欧美日韩小视频| 朝桐光一区二区| 国产精品影院在线观看| 激情五月婷婷综合| 久久久成人网| 国产婷婷一区二区三区| 亚洲成a人片在线观看中文| rebdb初裸写真在线观看| 97久久精品人搡人人玩| 亚洲一区二区三区免费在线观看| 99精品视频播放| 欧美一区三区四区| 超碰成人在线观看| 午夜精品短视频| 亚洲午夜在线电影| 成人黄色图片网站| 精品国产一区二区三区日日嗨| 国产嫩草影院久久久久| 高h视频在线播放| 亚洲最大福利视频网| 国产婷婷色一区二区三区四区| 肉体视频在线| 91在线免费视频| 国产精品情趣视频| 涩涩视频在线播放| 国产69精品久久久久9999apgf| 中文字幕欧美区| 欧美色网在线| 鲁丝片一区二区三区| 午夜精品久久久久久久久久 | 久久久久久亚洲精品| 青青草精品视频| 日韩精品一二| 97精品国产97久久久久久春色| 久国产精品韩国三级视频| 中文字幕在线看| 久久久久久九九九| 国产成人精品午夜视频免费| 午夜精品一区| 亚洲伊人久久综合| 亚洲午夜久久久久中文字幕久| 日本一区二区三区中文字幕| 日韩国产高清一区| 欧美精品一卡二卡| 欧美日韩视频| 蜜桃臀av在线| 欧洲日韩成人av| 99热精品国产| 国产免费不卡| 中文字幕在线亚洲精品| 日韩视频一区二区三区| 黄色在线成人| 电影在线高清| 国产精品9999久久久久仙踪林| 姬川优奈aav一区二区| 欧美特黄一级大片| 免费看成年人视频在线观看 | 亚洲电影免费观看高清完整版在线| 91精品国产麻豆国产在线观看| 中文字幕免费中文| 97精品国产97久久久久久免费 | 欧美激情一二三| 91麻豆精品在线观看| 福利一区和二区| 99er在线视频| 国产一区二区日韩| 99re免费视频精品全部| 精品视频在线观看免费观看| 人妻久久久一区二区三区| 国产一区二区三区网站| 国产一区二区三区黄视频| 欧美18—19sex性hd| 国产免费黄色一级片| 俺去啦;欧美日韩| 国产午夜一区二区三区| 青青久久av| 青青青草原在线| 精品一区二区国产| 欧美v亚洲v综合ⅴ国产v| 国产一区二区女| 国产一区二区视频在线看| 日本xxxx黄色| 国产日本欧美一区二区三区| 欧美性欧美巨大黑白大战| 日韩中文欧美在线| 日本综合久久| 日韩中文字幕组| 国产精品亚发布| 777a∨成人精品桃花网| 久久国产精品99久久人人澡| 中文.日本.精品| 先锋在线亚洲| 91香蕉视频在线下载| 日韩精品一区二区三区中文精品| 国产一区二区影院| 澳门成人av| 久久经典视频| 老汉色影院首页| 欧美一级片久久久久久久| 欧美性jizz18性欧美| 日本最新不卡在线| 免费欧美网站| 国产免费av高清在线| 黄色成人在线免费观看|