0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何解決RabbitMQ消息積壓的問題?

阿銘linux ? 來源:阿銘linux ? 2023-04-27 10:13 ? 次閱讀

如果你在你簡歷上寫上了熟悉RabbitMQ,那么你在面試時(shí)很有可能會(huì)被問到,如何解決MQ消息積壓?

要想將此問題回答完美,一定要多方面考慮。首先,我們要搞清楚是什么原因?qū)е碌南⒎e壓。我列舉了以下三種:

1)流量變大,而RabbitMQ服務(wù)器配置偏低,導(dǎo)致消息產(chǎn)生速度大于消費(fèi)速度;

2)消費(fèi)者故障,從而消息只增不減;

3)程序邏輯設(shè)計(jì)有問題,導(dǎo)致生產(chǎn)者持續(xù)生產(chǎn)消息,而消費(fèi)者不消費(fèi)或者消費(fèi)慢;

當(dāng)然,還有其它原因,上面三個(gè)已經(jīng)能覆蓋80%以上的問題。下面就以這三種情況分別來說說如何應(yīng)對。

對于第一種情況,很明顯就是資源不夠了,解決方法也很簡單,擴(kuò)容即可??梢钥v向擴(kuò)容,即增加服務(wù)器資源,該加內(nèi)存加內(nèi)存,該加CPU加CPU。

如果縱向擴(kuò)容不方便,那就橫向擴(kuò)容,即將單機(jī)改為集群模式,增加集群節(jié)點(diǎn),并且增加消費(fèi)者數(shù)量,讓消費(fèi)速度快起來!例如,原來是5個(gè)消費(fèi)者,現(xiàn)在變成50個(gè)消費(fèi)者!

對于第二種情況,要通過查看日志搞清楚為什么消費(fèi)者會(huì)故障,據(jù)我多年經(jīng)驗(yàn),發(fā)生此類問題大概率是程序代碼寫的不夠完美,跑著跑著導(dǎo)致內(nèi)存溢出,然后消費(fèi)者進(jìn)程被殺。要想永久解決此問題,需要結(jié)合日志分析程序代碼,優(yōu)化代碼。臨時(shí)解決方法是寫監(jiān)控腳本,如果發(fā)現(xiàn)消費(fèi)者進(jìn)程中斷,需要重啟服務(wù)!

再來說第三個(gè),這種情況發(fā)生的概率其實(shí)并不高,總之就是程序邏輯問題,判斷的方法也很簡單,持續(xù)觀察服務(wù)器的資源耗費(fèi)情況,如果內(nèi)存、CPU一切都正常,但就是隊(duì)列持續(xù)增長,而消費(fèi)速度非常慢。此時(shí),就需要好好查查程序代碼了。當(dāng)然,可以嘗試增加消費(fèi)者數(shù)量,看看是否有好轉(zhuǎn)。

上面說的只是“亡羊補(bǔ)牢”的操作,但還沒有說如何將當(dāng)前已經(jīng)積壓的隊(duì)列給快速消耗掉。

相信,當(dāng)我們發(fā)現(xiàn)消息積壓時(shí),想必問題已經(jīng)比較嚴(yán)重了,或者說已經(jīng)影響到業(yè)務(wù)正常運(yùn)轉(zhuǎn)了,那么當(dāng)務(wù)之急肯定是需要先將業(yè)務(wù)恢復(fù)正常。對于上面第二種情況,直接重啟相關(guān)服務(wù),讓消費(fèi)者恢復(fù)正常,定是首當(dāng)其沖。

除此之外,還有一種“斷尾求生”的騷操作,就是新開一個(gè)隊(duì)列,將新產(chǎn)生的消息到新隊(duì)列里,消費(fèi)者也到新隊(duì)列里消費(fèi)。而老的隊(duì)列,則需要做一個(gè)異步處理,慢慢消費(fèi)掉即可。

當(dāng)然,如果積壓的消息不怎么重要,可有可無的話,那干脆直接刪除掉,這樣大家都省事不是。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10813

    瀏覽量

    210880
  • rabbitmq
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    1011

原文標(biāo)題:面試題:如何解決RabbitMQ消息積壓

文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    何解決熱插拔時(shí)的電壓過沖

    電子發(fā)燒友網(wǎng)站提供《如何解決熱插拔時(shí)的電壓過沖.pdf》資料免費(fèi)下載
    發(fā)表于 09-06 11:34 ?0次下載
    如<b class='flag-5'>何解</b>決熱插拔時(shí)的電壓過沖

    何解決工字電感噪音大的問題

    電子發(fā)燒友網(wǎng)站提供《如何解決工字電感噪音大的問題.docx》資料免費(fèi)下載
    發(fā)表于 09-04 11:46 ?0次下載

    何解決電感的漏感問題

    電子發(fā)燒友網(wǎng)站提供《如何解決電感的漏感問題.docx》資料免費(fèi)下載
    發(fā)表于 09-02 14:48 ?0次下載

    何解決貼片繞線功率電感的兼容問題

    電子發(fā)燒友網(wǎng)站提供《如何解決貼片繞線功率電感的兼容問題.docx》資料免費(fèi)下載
    發(fā)表于 07-04 17:04 ?0次下載

    特斯拉庫存積壓:挑戰(zhàn)與機(jī)遇并存

    近日,特斯拉面臨了前所未有的庫存積壓問題,引發(fā)了業(yè)界和市場的廣泛關(guān)注。據(jù)Sherwood News報(bào)道和SkyFi提供的衛(wèi)星圖像對比,特斯拉位于得克薩斯州的內(nèi)華達(dá)超級工廠周圍的停車場,在短短幾個(gè)月
    的頭像 發(fā)表于 06-13 11:54 ?833次閱讀

    何解決連接國外大帶寬服務(wù)器時(shí)可能遇到的問題

     相信很多小白用戶會(huì)對如何解決連接國外大帶寬服務(wù)器時(shí)可能遇到的問題感興趣,RAK部落小編就為您整理發(fā)布如何解決連接國外大帶寬服務(wù)器時(shí)可能遇到的問題。
    的頭像 發(fā)表于 03-19 12:00 ?470次閱讀

    何解決修復(fù)立磨搖臂軸承位磨損問題

    何解決修復(fù)立磨搖臂軸承位磨損問題
    發(fā)表于 03-15 15:41 ?0次下載

    煤氣柜泄漏問題如何解

    電子發(fā)燒友網(wǎng)站提供《煤氣柜泄漏問題如何解決.docx》資料免費(fèi)下載
    發(fā)表于 03-05 17:49 ?0次下載

    電鍍?nèi)兹?b class='flag-5'>何解決PCB的信號(hào)、機(jī)械和環(huán)境問題?

    電鍍?nèi)兹?b class='flag-5'>何解決PCB的信號(hào)、機(jī)械和環(huán)境問題?
    的頭像 發(fā)表于 02-27 14:15 ?539次閱讀

    何解決鍵槽滾鍵磨損問題

    電子發(fā)燒友網(wǎng)站提供《如何解決鍵槽滾鍵磨損問題.docx》資料免費(fèi)下載
    發(fā)表于 02-04 14:24 ?0次下載

    何解決針對破碎機(jī)軸磨損問題

    電子發(fā)燒友網(wǎng)站提供《如何解決針對破碎機(jī)軸磨損問題.docx》資料免費(fèi)下載
    發(fā)表于 01-17 16:30 ?0次下載

    基于Docker Compose部署RabbitMQ的經(jīng)驗(yàn)分享

    RabbitMQ 是一個(gè)功能強(qiáng)大的開源消息隊(duì)列系統(tǒng),它實(shí)現(xiàn)了高效的消息通信和異步處理。
    的頭像 發(fā)表于 01-03 10:22 ?1714次閱讀
    基于Docker Compose部署<b class='flag-5'>RabbitMQ</b>的經(jīng)驗(yàn)分享

    印刷錫膏時(shí)出現(xiàn)少錫的問題該如何解決?

    印刷錫膏時(shí)出現(xiàn)少錫的問題該如何解決?
    的頭像 發(fā)表于 12-11 09:38 ?2404次閱讀
    印刷錫膏時(shí)出現(xiàn)少錫的問題該如<b class='flag-5'>何解</b>決?

    redis和rabbitMQ的區(qū)別

    Redis和RabbitMQ是兩個(gè)流行的開源消息傳遞技術(shù),用于構(gòu)建高可靠、可擴(kuò)展和可擴(kuò)展的應(yīng)用程序。雖然它們都用于實(shí)現(xiàn)消息傳遞機(jī)制,但它們在設(shè)計(jì)和運(yùn)作方式上存在一些不同之處。在本文中,我們將詳細(xì)討論
    的頭像 發(fā)表于 12-04 14:48 ?1264次閱讀

    RabbitMq入門教程

    RabbitMQ是一個(gè)開源的,在AMQP基礎(chǔ)上完整的,可復(fù)用的企業(yè)消息系統(tǒng)。
    的頭像 發(fā)表于 12-04 11:10 ?466次閱讀
    <b class='flag-5'>RabbitMq</b>入門教程