RabbitMQ單機(jī)消費(fèi)者設(shè)置合理的并發(fā)數(shù)與prefetch Count策略

寫(xiě)在前面

最開(kāi)始我們使用rabbitmq的時(shí)候可能只會(huì)用一個(gè)消費(fèi)和一個(gè)prefetch Count督赤,如下圖所示。

image.png

隨著生產(chǎn)者發(fā)送消息量變大拴清,等到生產(chǎn)者發(fā)送速度大于消費(fèi)者消費(fèi)速度就會(huì)產(chǎn)生消息擠壓靶病。這個(gè)時(shí)候我就要考慮設(shè)置設(shè)置并發(fā)數(shù)和prefetch Count

設(shè)置prefetch Count

https://www.rabbitmq.com/blog/2014/04/14/finding-bottlenecks-with-rabbitmq-3-3/這篇博客告訴我們?cè)O(shè)置多少合理口予。經(jīng)過(guò)作者的測(cè)試娄周,preprefetch Count設(shè)置30是合理的,如果preprefetch Count值再變大沪停,消費(fèi)速度基本沒(méi)變煤辨。這篇博客也告訴了我們一個(gè)觀察消費(fèi)速率的指標(biāo)Consumer utilisation,對(duì)應(yīng)的這個(gè)值越大牙甫,消費(fèi)投放速度越快掷酗,消息處于空閑的時(shí)間會(huì)越短。

并發(fā)數(shù)

試想以下場(chǎng)景窟哺,消費(fèi)者設(shè)置一個(gè)并發(fā),一個(gè)prefetch count技肩,這個(gè)時(shí)候rabbitmq中有A且轨,B兩條消息,其中A消息推送給了消費(fèi)者虚婿,B消息還在rabbitmq隊(duì)列中旋奢,消費(fèi)者處理A消息需要1s。這個(gè)時(shí)候消費(fèi)者在處理A消息然痊,但是B消息還在隊(duì)列中休息至朗,靜靜的等著推送給消費(fèi)者,B消息休息的時(shí)間就是消息的空閑時(shí)間剧浸。

image.png

下圖中顯示了B消息的空閑期锹引。
image.png

增大并發(fā)數(shù)也可以減少B消息的空閑時(shí)間,那么并發(fā)數(shù)設(shè)置多少合適唆香?嫌变?并發(fā)數(shù)設(shè)置大了就會(huì)加大線程對(duì)資源搶奪,增加上下文切換頻率等反而有可能會(huì)降低消費(fèi)速度躬它,并發(fā)數(shù)少了CPU的利用率低腾啥。這里提供一個(gè)公式:并發(fā)數(shù)=核數(shù) * (x+y)/x,其中x是線程執(zhí)行時(shí)間,y是阻塞等待時(shí)間倘待。
關(guān)于阻塞:

  1. 這里的阻塞指的是會(huì)釋放CPU的阻塞疮跑,比如網(wǎng)絡(luò)編程的accept()等待客戶端連接,recv()等待下游回包凸舵。
  2. while(true) { i ++;} 這種阻塞就不會(huì)釋放CPU祸挪。

關(guān)于公式推導(dǎo):
如下圖,假設(shè)是單核CPU贞间,并且線程工作時(shí)間需要2ms贿条,阻塞時(shí)間為2ms,那么只要設(shè)置兩個(gè)線程就可以讓CPU跑到100%增热。

image.png

可以看到整以,只要在前一個(gè)線程一旦處于空閑時(shí)間中,后面的任務(wù)能夠立馬被執(zhí)行峻仇,線程就可以跑到100%公黑,如果單核CPU,線程工作2ms摄咆,阻塞時(shí)間為3ms凡蚜,那么我們就需要3個(gè)線程保證cpu跑到100%,所以線程數(shù)就是(執(zhí)行時(shí)間+空閑時(shí)間)/執(zhí)行時(shí)間吭从,如果有小數(shù)朝蜘,那么就向上取整。所以如果是NCPU涩金,最佳的設(shè)置的線程數(shù)是=N*((執(zhí)行時(shí)間+空閑時(shí)間)/執(zhí)行時(shí)間)谱醇。
image.png

所以在單機(jī)上,rabbitmq消費(fèi)者設(shè)置的合理并發(fā)數(shù)是:N*((消費(fèi)消費(fèi)時(shí)間+消息在網(wǎng)絡(luò)傳遞時(shí)間)/消費(fèi)消費(fèi)時(shí)間)
image.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末步做,一起剝皮案震驚了整個(gè)濱河市副渴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌全度,老刑警劉巖煮剧,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異将鸵,居然都是意外死亡勉盅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)咨堤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)菇篡,“玉大人,你說(shuō)我怎么就攤上這事一喘∏梗” “怎么了嗜暴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)议蟆。 經(jīng)常有香客問(wèn)我闷沥,道長(zhǎng),這世上最難降的妖魔是什么咐容? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任舆逃,我火速辦了婚禮,結(jié)果婚禮上戳粒,老公的妹妹穿的比我還像新娘路狮。我一直安慰自己,他們只是感情好蔚约,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布奄妨。 她就那樣靜靜地躺著,像睡著了一般苹祟。 火紅的嫁衣襯著肌膚如雪砸抛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天树枫,我揣著相機(jī)與錄音直焙,去河邊找鬼。 笑死砂轻,一個(gè)胖子當(dāng)著我的面吹牛奔誓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舔清,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼丝里,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了体谒?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臼婆,失蹤者是張志新(化名)和其女友劉穎抒痒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體颁褂,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡故响,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颁独。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彩届。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖誓酒,靈堂內(nèi)的尸體忽然破棺而出樟蠕,到底是詐尸還是另有隱情贮聂,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布寨辩,位于F島的核電站吓懈,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏靡狞。R本人自食惡果不足惜耻警,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甸怕。 院中可真熱鬧甘穿,春花似錦、人聲如沸梢杭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)式曲。三九已至妨托,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吝羞,已是汗流浹背兰伤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钧排,地道東北人敦腔。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恨溜,于是被迫代替她去往敵國(guó)和親符衔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容