JMeter是性能測(cè)試中被普遍使用的一種工具,常用于壓力測(cè)試。該工具具有豐富的擴(kuò)展插件用以滿足不同情況下性能測(cè)試的需求。消息隊(duì)列(Message Queue)簡(jiǎn)稱為MQ,作為目前的主流中間件,在很多軟件或程序中均會(huì)得到使用,測(cè)試人員在測(cè)試過(guò)程中會(huì)遇到涉及MQ的系統(tǒng)改造,因而需要利用JMeter實(shí)現(xiàn)消息隊(duì)列數(shù)據(jù)的發(fā)送和接收,完成性能測(cè)試工作。本文基于實(shí)際工作中遇到的項(xiàng)目情況,介紹了一種JMeter擴(kuò)展插件Mqmeter的使用方法,完成消息隊(duì)列的性能測(cè)試。
1、引言
消息隊(duì)列是分布式系統(tǒng)中的重要組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問(wèn)題,以實(shí)現(xiàn)高性能、高可用、可伸縮和最終一致性架構(gòu)。作為大型分布式系統(tǒng)中不可缺少的中間件,目前使用較多的消息隊(duì)列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ和RocketMQ等。
JMeter作為Apache的開(kāi)源性能測(cè)試工具,支持多種服務(wù)類型的測(cè)試;同時(shí)允許使用者對(duì)其進(jìn)行二次開(kāi)發(fā)擴(kuò)展,以插件的形式滿足JMeter無(wú)法提供的定制化需求,目前網(wǎng)絡(luò)上包含有多種開(kāi)源插件可供測(cè)試人員使用。
本文結(jié)合實(shí)際測(cè)試工作中所遇到的消息隊(duì)列測(cè)試需求,介紹了一種JMeter插件Mqmeter,該插件可用于在IMB MQ隊(duì)列上放置和獲取消息。它使用IP地址、端口號(hào)、用戶名和密碼通過(guò)服務(wù)器通道連接到MQ服務(wù)器。通過(guò)該插件,測(cè)試人員可以使用JMeter完成MQ的壓力測(cè)試,通過(guò)該插件實(shí)現(xiàn)對(duì)MQ的多并發(fā)操作。
2、環(huán)境準(zhǔn)備
JMeter的運(yùn)行需要JAVA環(huán)境,Mqmeter插件源代碼的編譯需要Maven環(huán)境,本節(jié)將對(duì)Mqmeter插件使用過(guò)程中的運(yùn)行環(huán)境部署加以詳細(xì)的闡述。
2.1 環(huán)境架構(gòu)說(shuō)明
本文實(shí)際進(jìn)行性能測(cè)試的架構(gòu)如下,報(bào)文大概流向?yàn)椋篔Meter發(fā)送報(bào)文至小型機(jī)應(yīng)用接口,小型機(jī)應(yīng)該程序?qū)⑾?bào)文寫入MQ隊(duì)列中,消息消費(fèi)模塊從MQ中獲取并消費(fèi)消息報(bào)文。
2.2 環(huán)境配置
JMeter運(yùn)行需要Java環(huán)境,編譯Java源代碼形成jar包需要Maven,Maven運(yùn)行也需要Java環(huán)境,具體JDK環(huán)境安裝過(guò)程和Java環(huán)境變量配置不在此展開(kāi),如有需要可自行上網(wǎng)查詢。
2.2.1Maven安裝
Maven的下載地址:http://maven.apache.org/download.cgi,具體可根據(jù)已按安裝的JDK版本選擇相匹配的Maven版本下載,具體參考如下:
不同操作系統(tǒng)對(duì)應(yīng)的下載文件如下:
Maven下載到本地后默認(rèn)安裝即可,關(guān)鍵需要配置環(huán)境變量,本文使用的是Windows操作系統(tǒng),以Windows下環(huán)境變量配置為例進(jìn)行環(huán)境變量配置介紹。具體步驟如下;
1)右鍵"計(jì)算機(jī)",選擇"屬性>高級(jí)系統(tǒng)設(shè)置>環(huán)境變量,新建系統(tǒng)變量MAVEN_HOME,變量值:C:\Maven\apache-maven-3.6.3(即安裝目錄)。如下:
2)編輯系統(tǒng)變量Path,添加變量值:;%MAVEN_HOME%\bin。如下:
2.2.2Mqmeter插件安裝
JMeter是一款開(kāi)源的性能測(cè)試工具,功能強(qiáng)大,可擴(kuò)展接口豐富。現(xiàn)有的JMeter插件對(duì)MQ消息隊(duì)列進(jìn)行性能測(cè)試體驗(yàn)稍差,本文采用GitHub上一開(kāi)源項(xiàng)目形成的JMeter插件執(zhí)行MQ消息隊(duì)列的性能測(cè)試。該插件具體安裝步驟如下:
1)Mqmeter源代碼下載
GitHub下載鏈接:http://github.com/JoseLuisSR/mqmeter,將Mqmeter源代碼下載并解壓至本機(jī),指定路徑存放。
2)構(gòu)建擴(kuò)展包
命令行模式進(jìn)入本機(jī)Mqmeter源代碼目錄下,執(zhí)行命令:mvn package。
該命令完成了Mqmeter源代碼的編譯,單元測(cè)試和打包。利用源碼構(gòu)建可執(zhí)行Jar包,構(gòu)建過(guò)程如下圖所示:
構(gòu)建成功后會(huì)在源代碼目錄下生成一個(gè)target文件夾,如下圖所示:
該文件夾中包含可執(zhí)行jar包:mqmeter-2.0.1.jar
3)Mqmeter安裝
將上步中生成的mqmeter-2.0.1.jar放置到"$JMeter_HOME/lib/ext"路徑下,如圖所示,至此Mqmeter的環(huán)境準(zhǔn)備工作基本完成。
3、壓測(cè)執(zhí)行
本節(jié)主要說(shuō)明利用Mqmeter插件執(zhí)行性能測(cè)試過(guò)程中JMeter的使用和MQ消息隊(duì)列的性能監(jiān)控。
3.1 JMeter使用
Mqmeter的環(huán)境準(zhǔn)備完成后,就可以在JMeter中使用該Java取樣器發(fā)送消息報(bào)文。步驟如下:
1)進(jìn)入JMeter安裝目錄apache-jmeter-5.0\bin,雙擊jmeter.bat啟動(dòng)JMeter,添加線程組;
2)在線程組中添加取樣器,Mqmeter在取樣器中名稱為"Java Request";
3)根據(jù)測(cè)試內(nèi)容對(duì)取樣器中的必填參數(shù)進(jìn)行填寫;
上圖中各參數(shù)所代表的含義在此稍加解釋:
mq_manager:MQ管理器名稱,可以通過(guò)IBM WAS控制臺(tái)獲取。
mq_queue_rqst:放置消息的隊(duì)列名稱,可以是本地消息隊(duì)列也可以是遠(yuǎn)程隊(duì)列。
mq_queue_rsps:獲取消息的隊(duì)列名稱,可以是本地消息隊(duì)列也可以是遠(yuǎn)程隊(duì)列,如果不想收到響應(yīng)消息請(qǐng)將其置空。
mq_correlate_rsps_msg:將響應(yīng)消息與請(qǐng)求消息相關(guān)聯(lián),從MQ隊(duì)列中獲取新的消息。如果不想收到響應(yīng)消息,將其置空。
mq_wait_interval:設(shè)置get消息調(diào)用等待合適的消息到達(dá)的等待間隔。
mq_hostname:運(yùn)行MQ Server的主機(jī)名或IP地址。
mq_port:MQ服務(wù)器偵聽(tīng)器的端口號(hào)。
mq_channel:MQ服務(wù)器上的服務(wù)器通道名稱。
mq_user_id:連接到MQ服務(wù)器通道的用戶ID。
mq_user_password:連接到MQ服務(wù)器通道的用戶密碼。
mq_encoding_message:消息的字符編碼標(biāo)準(zhǔn):對(duì)于EBCDIC,請(qǐng)輸入Cp1047,ASCII只需輸入ASCII。
mq_message:消息內(nèi)容。
4)從上步中能夠看出,為提現(xiàn)Mqmeter插件的強(qiáng)大功能,本文對(duì)java request的配置頁(yè)中的變量都進(jìn)行了參數(shù)化,能夠?qū)崿F(xiàn)向不同MQ隊(duì)列、不同的消息管理器發(fā)送不同的消息內(nèi)容。具體參數(shù)配置過(guò)程:添加配置元件(Config Element)>用戶自定義參數(shù)(User Defined Variable),各個(gè)參數(shù)具體填寫如下:
5)匯總報(bào)告、TPS監(jiān)聽(tīng)器、響應(yīng)時(shí)間、查看結(jié)果樹配置完成后即可開(kāi)始測(cè)試。
至此性能測(cè)試發(fā)壓機(jī)端的發(fā)壓功能已部署完成。
3.2 MQ性能監(jiān)控
MQ的性能測(cè)試過(guò)程中要不斷查看MQ隊(duì)列的深度,一是為了確保相關(guān)系統(tǒng)交易鏈路的可用性,二是定性的查看MQ本身的讀寫性能。而通過(guò)指令對(duì)MQ操作過(guò)于繁瑣,本文將指令腳本化,大大節(jié)省了對(duì)MQ性能測(cè)試過(guò)程中的時(shí)間,也提高了效率。
本文MQ消息隊(duì)列安裝在IBM AIX小型機(jī)上,常用MQ操作有啟動(dòng)消息隊(duì)列管理器【runmqsc test1】、查看隊(duì)列深度【dis ql(MSGMB_1)】,同時(shí)需要關(guān)注隊(duì)列深度字段【CURDEPTH】隨時(shí)間的變化,腳本化如下:
實(shí)時(shí)輸出如下:
4、總結(jié)
本文介紹了一種利用Mqmeter插件對(duì)MQ消息隊(duì)列進(jìn)行性能測(cè)試,并通過(guò)對(duì)UNIX指令腳本化實(shí)現(xiàn)對(duì)MQ的實(shí)時(shí)監(jiān)控,詳細(xì)介紹了Mqmeter從源代碼生成JAR包,再到Jmeter使用該插件進(jìn)行性能測(cè)試,希望能對(duì)從事MQ性能測(cè)試的同業(yè)人員有所幫助,同時(shí)本文還有諸多不足,諸如由于實(shí)際項(xiàng)目需求未介紹利用Mqmeter從消息隊(duì)列取消息、未介紹量化性能的具體方法等等,后續(xù)如有實(shí)際項(xiàng)目需求會(huì)做進(jìn)一步探索。
請(qǐng)關(guān)注+私信回復(fù):“測(cè)試”就可以免費(fèi)拿到軟件測(cè)試學(xué)習(xí)資料和面試題庫(kù),快速讓自己變強(qiáng)!
上個(gè)月在閑魚看到一張Precision 3260 Compact主板只要600,比P3 Tiny的還要便宜,就打算再 像P3 Tiny那樣買散件自己裝 一臺(tái)。
PCH可見(jiàn) SRL00 字樣,是“入門級(jí)工作站”W680的3260CFF而不是“桌面級(jí)”Q670的70x0MFF。
如果你沒(méi)了解過(guò)W680,它大概是某種能用vPro、不能超頻但能讓酷睿(i5-xx500及以上)用上ECC的Z690。
https://edc.intel.com/content/www/us/en/design/ipla/software-development-platforms/client/platforms/alder-lake-desktop/intel-600-series-chipset-family-platform-controller-hub-pch-datasheet-volume/004/
不過(guò)咱手里兩顆LGA1700的U都是QS正顯,萬(wàn)一點(diǎn)不亮正式版品牌機(jī)就尷尬了,于是找到這方面的大佬請(qǐng)教(大佬的圖,可見(jiàn)紅、藍(lán)板是工程版,綠版黃絲印類似QS,綠板白絲印是正式版):
向賣家確認(rèn)是全新主板,沒(méi)有裝過(guò)機(jī)也就沒(méi)有上過(guò)正式版U,于是下單,收貨點(diǎn)亮后就氵了一篇預(yù)告:
這次記得拍插槽電容了:
還在生產(chǎn)模式:
預(yù)告發(fā)出后,我了解到一個(gè)問(wèn)題:雖然3260CFF比Z2 Mini G9 / P3 Ultra都小,是DHL中體積最小的工作站,但工控板方向的W680 Thin-ITX(在放棄獨(dú)顯時(shí))可以實(shí)現(xiàn)更小的體積:
https://www.asrockind.com/en-gb/IMB-X1240-WV
作為一個(gè)整活,如果標(biāo)題中沒(méi)有極限化用語(yǔ),效果是要大打折扣的,我很快想到了另一個(gè)噱頭——“最便宜”,先來(lái)看看其它低價(jià)W680:
最低的“正常W680”在八九百的價(jià)位段,要說(shuō)600<900那固然是事實(shí),但要再加上幾百塊的專用RISER獲得基本PCIe能力就不好說(shuō)了——由于戴爾把插槽放在中部,必須搭配支撐鐵架使用,目前還沒(méi)有畫板+鈑金雙料愛(ài)好者做出廉價(jià)版本RISER。
思來(lái)想去,干脆把1L貫徹到底,放棄PCIe插槽把它裝進(jìn)7000MFF的機(jī)箱里,這樣準(zhǔn)定便宜,清單如下:
主板? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 581(用閑魚幣減了一些)
鋁散熱片? ? ? ? ? ? ? ? ? ? ? ? 16
x080MFF風(fēng)扇? ? ?? ? ? ? ? ?30(這幾代固定方式相同)
130W適配器? ? ? ? ? ? ? ? ? 29
機(jī)箱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 138(賣家說(shuō)沒(méi)有這個(gè)版本的7000MFF機(jī)箱了,換了一個(gè)7010MFF Plus的,前面板沒(méi)有型號(hào)數(shù)字更簡(jiǎn)潔了
M3x5+5內(nèi)螺紋M2銅柱?? 6(轉(zhuǎn)接螺柱比一般的貴,再加上方便硬改選的銅制,就更貴了)
-
總計(jì)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 800
機(jī)箱底部標(biāo)出了各種導(dǎo)熱墊的位置,挺有趣的:
與7050MFF“借”來(lái)的原裝非標(biāo)螺絲相比,M3轉(zhuǎn)M2螺柱還是長(zhǎng)了一些,有空用銼刀改一下:
各有特色的四臺(tái)小主機(jī),可以分為兩臺(tái)戴爾、兩臺(tái)聯(lián)想、兩臺(tái)LGA1151、兩臺(tái)LGA1700、兩臺(tái)散熱器用三顆螺絲、兩臺(tái)散熱器用四顆螺絲、一臺(tái)PCH在主板背面、一臺(tái)有固定的SATA接口/PCH沒(méi)有散熱片、一臺(tái)散熱器固定在ILM(而不是機(jī)箱)上、唯一一臺(tái)原生不支持vPro:
背面,可見(jiàn)3260CFF的第四個(gè)后置USB與7010MFF機(jī)箱的擴(kuò)展接口位置沖突,都用不了,應(yīng)該說(shuō)戴爾的空間利用率不如聯(lián)想。
逛逛BIOS:
(默認(rèn)的MAC怎么是11個(gè)8加上一個(gè)7)
識(shí)別碼全都沒(méi)設(shè)置:
AMT也沒(méi)有配置:
適配器警告可以關(guān)閉:
同樣可以關(guān)小核,戴爾按傳統(tǒng)稱為“Atom Cores”:
進(jìn)系統(tǒng)時(shí)遇到了奇怪的問(wèn)題:從另外兩臺(tái)機(jī)器上“借”來(lái)的系統(tǒng)盤都會(huì)出現(xiàn)INACCESSIBLE_BOOT_DEVICE藍(lán)屏,手邊又沒(méi)有空的SSD能裝系統(tǒng),最后翻出WinToGo才成功。
然后又是奇怪的問(wèn)題:CPU被溫度墻鎖在了0.8GHz,但溫度其實(shí)連40度都不到,進(jìn)PE查看也是如此(其實(shí)BIOS里也一樣),風(fēng)扇則像P3 Tiny的“全速模式”那樣恒定轉(zhuǎn)速工作(倒沒(méi)那么吵,轉(zhuǎn)速應(yīng)該還是低一些,HWiNFO讀不到品牌機(jī)的轉(zhuǎn)速所以沒(méi)有具體值)。
堅(jiān)持跑完測(cè)試,權(quán)當(dāng)娛樂(lè)吧:
用TS禁用溫度墻后再跑,溫度過(guò)了90,但分?jǐn)?shù)還是比 P3 Tiny 低一些,看起來(lái)121沒(méi)能全程跑滿65W?
換成R23,頂著100度溫度墻跑了5分鐘,可見(jiàn)此時(shí)功率降到不到60W(估計(jì)是供電過(guò)熱?然后我給手動(dòng)停了,怕把給燒了)
由于同樣的原因,我壓根沒(méi)敢把127T裝上去
現(xiàn)在的問(wèn)題該怎么解決這個(gè)“錯(cuò)誤溫度墻”?戴爾官網(wǎng)的“拆電池大法”沒(méi)有效果,這個(gè)來(lái)源的板也不可能去找人家客服……我也不認(rèn)為還在生產(chǎn)模式的備件會(huì)有硬件問(wèn)題?
https://www.dell.com/support/kbdoc/en-us/000145125/processor-speed-limited-to-0-79ghz-800mhz
正常情況下7000MFF的性能釋放似乎是比P3 Tiny激進(jìn)的——畢竟前者不用考慮獨(dú)顯,不知道3260CFF不安裝獨(dú)顯時(shí)的表現(xiàn)如何?
https://zhuanlan.zhihu.com/p/590744824
再來(lái)“狗尾續(xù)貂”看看各代機(jī)器的螺絲配置:
初代高端Micro——9020MFF沒(méi)有給出主板螺絲規(guī)格,看起來(lái)都是一樣的平頭螺絲?
https://dl.dell.com/topicspdf/optiplex-9020m-desktop_owners-manual_en-us.pdf
7040MFF也還是這樣:
https://dl.dell.com/topicspdf/optiplex-7040-desktop_owners-manual2_en-us.pdf
7050MFF手冊(cè)中,M.2 SSD使用塑料固定件,M.2 WiFi使用普通的#6-32十字外六角螺絲,前文的實(shí)機(jī)圖片可見(jiàn)不是這樣:
https://dl.dell.com/content/manual65979904-optiplex-7050-micro-owner-s-manual.pdf?language=en-us
7060MFF的兩顆M.2固定(底座)都使用了十字+內(nèi)攻絲的M3螺絲,其余機(jī)箱螺絲不變——7050MFF實(shí)機(jī)也是這樣:
https://dl.dell.com/topicspdf/optiplex-7060-desktop_service-manual3_en-us.pdf
7080MFF將PCH移到主板背面,正面有了第三條M.2插槽、第三顆M3“螺絲”:
https://dl.dell.com/content/manual14448680-optiplex-7080-micro-service-manual.pdf?language=en-us
最新的7000MFF將十字外六角螺絲統(tǒng)一成M3,數(shù)量增加了一個(gè),固定M.2的非標(biāo)“螺絲”加上了L后綴:
https://dl.dell.com/content/manual21273838-optiplex-7000-micro-service-manual.pdf?language=en-us
更新(但沒(méi)有OptiPlex對(duì)應(yīng)型號(hào))的Precision 3280 Compact又調(diào)整了螺絲布局:
https://dl.dell.com/content/manual23490351-precision-3280-cff-owner-s-manual.pdf?language=en-us
最后問(wèn)一句,有讀者知道這種散熱片叫什么嗎?搜“戴爾 固態(tài) 散熱片”的結(jié)果全都是筆記本用的導(dǎo)熱片。
https://dl.dell.com/content/manual20495532-m-2-2230-2280-ssd-installation-onto-heatsink-module-tech-sheet.pdf?language=en-us
最后暢想一下,如果溫度墻問(wèn)題得以解決,手里就有了三張LGA1700主板和兩顆CPU……等13900T QS便宜下來(lái)再買一顆吧,目前QS正顯Q1EG在2800左右,ES版Q0PV/Q0UG在1300左右但品牌機(jī)BIOS大概點(diǎn)不亮,等ARL發(fā)布、前者降到2000以內(nèi)再考慮吧。
好像在LGA1700平臺(tái)停留得太久了,要考慮轉(zhuǎn)向AM5玩玩X3D了
如果能蹲到便宜的3260 RISER也可以買一張“改回去” ,甚至改個(gè)“外置顯卡”?