消息積壓了該如何處理萌腿?
優(yōu)化性能來(lái)避免消息積壓
一限匣、發(fā)送端性能優(yōu)化
增加生產(chǎn)者的批量發(fā)送的大小或者并發(fā)數(shù)來(lái)提高發(fā)送速度
對(duì)于實(shí)時(shí)性比較高的業(yè)務(wù)場(chǎng)景通過(guò)增加并發(fā)數(shù)來(lái)加快消息發(fā)送速度,對(duì)于一些不關(guān)心時(shí)延的業(yè)務(wù)可以通過(guò)增加發(fā)送批量數(shù)來(lái)提高發(fā)送速度毁菱;
二米死、消費(fèi)端性能優(yōu)化
使用消息隊(duì)列過(guò)程中,大部分性能問(wèn)題出現(xiàn)在消費(fèi)端贮庞,所以一定要保證消費(fèi)端的消費(fèi)性能要高于生產(chǎn)端的發(fā)送性能峦筒,這樣的系統(tǒng)才能健康的持續(xù)運(yùn)行
除了優(yōu)化消費(fèi)端的消費(fèi)業(yè)務(wù)邏輯,可以提高消費(fèi)端的并發(fā)消費(fèi)數(shù)
在擴(kuò)容 Consumer 的實(shí)例數(shù)量的同時(shí)窗慎,必須同步擴(kuò)容主題中的分區(qū)(也叫隊(duì)列)數(shù)量物喷,確保 Consumer 的實(shí)例數(shù)和分區(qū)數(shù)量是相等的
三、線上消息積壓?jiǎn)栴},如何處理脯丝?
導(dǎo)致消息積壓的問(wèn)題一般分為兩種:要么發(fā)送變快了商膊,要么消費(fèi)變慢了
一般消息隊(duì)列都內(nèi)置了監(jiān)控功能,可以通過(guò)監(jiān)控來(lái)分析具體原因
如何處理:
- 消費(fèi)端擴(kuò)容
短時(shí)間內(nèi)不太可能優(yōu)化消費(fèi)端的代碼來(lái)提升消費(fèi)性能宠进,唯一的方法是通過(guò)擴(kuò)容消費(fèi)端的實(shí)例數(shù)來(lái)提升總體的消費(fèi)能力
- 服務(wù)降級(jí)
如果短時(shí)間內(nèi)沒(méi)有足夠的服務(wù)器資源進(jìn)行擴(kuò)容晕拆,沒(méi)辦法的辦法是,將系統(tǒng)降級(jí)材蹬,通過(guò)關(guān)閉一些不重要的業(yè)務(wù)实幕,減少發(fā)送方發(fā)送的數(shù)據(jù)量,最低限度讓系統(tǒng)還能正常運(yùn)轉(zhuǎn)堤器,服務(wù)一些重要業(yè)務(wù)昆庇。
- 異常監(jiān)控
還有一種不太常見(jiàn)的情況,你通過(guò)監(jiān)控發(fā)現(xiàn)闸溃,無(wú)論是發(fā)送消息的速度還是消費(fèi)消息的速度和原來(lái)都沒(méi)什么變化整吆,這時(shí)候你需要檢查一下你的消費(fèi)端,是不是消費(fèi)失敗導(dǎo)致的一條消息反復(fù)消費(fèi)這種情況比較多辉川,這種情況也會(huì)拖慢整個(gè)系統(tǒng)的消費(fèi)速度