一嗜诀、背景
前段時(shí)間公司有個(gè)項(xiàng)目要測(cè)試RocketMQ隊(duì)列的消費(fèi)處理能力恼琼,本人遇到了一些坑,最終都得到了解決拆讯,于是便有了這篇文章(最終開發(fā)的jmeter插件見(jiàn)文章末尾)脂男。
二、遇到的問(wèn)題
1. 數(shù)據(jù)編碼
2. 多線程并發(fā)
3. 隊(duì)列的堆積
三种呐、問(wèn)題分析和解決
問(wèn)題一:MQ報(bào)文亂碼宰翅。
現(xiàn)象:查看采集平臺(tái)MQ中的被消費(fèi)的日志,開發(fā)人員發(fā)現(xiàn)有部分報(bào)文亂碼爽室。
原因:開發(fā)人員通過(guò)查看后臺(tái)日志汁讼,發(fā)現(xiàn)日志中某字段值為亂碼,經(jīng)排查阔墩,此字段值通常由漢字組成嘿架。
解決方案:在腳本發(fā)送請(qǐng)求時(shí)增加編碼字段,并將message設(shè)為utf-8編碼啸箫,如圖:
經(jīng)修改耸彪,開發(fā)反饋請(qǐng)求返回預(yù)期報(bào)文了:
問(wèn)題二:多線程并發(fā),連接MQ服務(wù)器后忘苛,啟動(dòng)生產(chǎn)者失敗蝉娜。
現(xiàn)象:按TPS梯度穩(wěn)定發(fā)壓場(chǎng)景,500TPS-2500TPS柑土,需要多個(gè)線程并發(fā)以支持設(shè)定的TPS梯度蜀肘,異常日志提示“The producer service state not OK, START_FAILED” 和“The producer service state not OK,CREATE_JUST”兩種異常。
原因:經(jīng)與開發(fā)溝通并自查腳本稽屏,每一個(gè)線程的生產(chǎn)者組名和實(shí)例名不可重復(fù),于是修改腳本西乖,對(duì)生產(chǎn)者組名和實(shí)例名進(jìn)行參數(shù)分塊狐榔;
重新發(fā)起多并發(fā)請(qǐng)求坛增,仍然有上述異常請(qǐng)求出現(xiàn),于是查看java sample中的具體請(qǐng)求代碼薄腻,經(jīng)過(guò)本地多次調(diào)試收捣,最終定位是成員變量中producer和producerName設(shè)置為靜態(tài)變量導(dǎo)致;
解決方案:將去掉producer和producerName中static關(guān)鍵字庵楷,重新打包放到..\lib\ext下罢艾,本地多線程并發(fā)測(cè)試通過(guò),如圖:
問(wèn)題三:如何通過(guò)查看隊(duì)列堆積情況尽纽,確定消費(fèi)者的處理能力咐蚯。
方案:按TPS梯度穩(wěn)定發(fā)壓場(chǎng)景,開始執(zhí)行場(chǎng)景后弄贿,實(shí)時(shí)監(jiān)控隊(duì)列的堆積情況春锋,當(dāng)監(jiān)控到隊(duì)列中有明顯的消息積壓,并呈現(xiàn)有加大的趨勢(shì)時(shí)差凹,則判定在特定場(chǎng)景下此時(shí)達(dá)到消費(fèi)者的最大處理能力期奔。
分析:我們?cè)诖舜螇簻y(cè)中,通過(guò)按照TPS穩(wěn)定發(fā)壓危尿,隊(duì)列監(jiān)控人員實(shí)時(shí)監(jiān)測(cè):在1400TPS之后出現(xiàn)10條以上的消息堆積(此前一直保持在10條以內(nèi))呐萌,并且堆積逐漸加大,我們認(rèn)為此時(shí)達(dá)到消費(fèi)者最大的處理能力谊娇;經(jīng)過(guò)壓測(cè)后組內(nèi)復(fù)盤肺孤,我們認(rèn)為之前的策略存在一定的問(wèn)題,因?yàn)樵谡?qǐng)求結(jié)束后邮绿,積壓的消息可能在幾秒內(nèi)就消費(fèi)完了渠旁,按照之前的策略評(píng)估會(huì)導(dǎo)致消費(fèi)者能力偏悲觀。
最終方案:根據(jù)分析船逮,組內(nèi)認(rèn)為3秒內(nèi)處理完是用戶基本可接受的顾腊,因此消費(fèi)者的最大處理能力應(yīng)該是當(dāng)隊(duì)列中堆積消息達(dá)到當(dāng)前TPS的3倍時(shí)較為合理。
四挖胃、特別說(shuō)明
問(wèn)題二中杂靶,我們實(shí)際對(duì)腳本做了兩次調(diào)整,兩次均為必要調(diào)整酱鸭;另外生產(chǎn)者組名和實(shí)例名進(jìn)行參數(shù)分塊吗垮,最少保證對(duì)這兩個(gè)入?yún)⒅幸粋€(gè)分塊即可。
本文最終開發(fā)的jar包(jmeter插件)可參考以下:
https://download.csdn.net/download/weixin_40126600/85011909?spm=1001.2014.3001.5501