fmq-壓測(cè)
下面為單節(jié)點(diǎn)壓測(cè)
一、測(cè)試背景
隨著業(yè)務(wù)的快速拓展,基于 MQTT 協(xié)議構(gòu)建的應(yīng)用系統(tǒng)在消息通信性能方面面臨著更高要求。為了精準(zhǔn)評(píng)估當(dāng)前 4 核 8G 單節(jié)點(diǎn)服務(wù)器在 MQTT 消息通信場(chǎng)景下的性能表現(xiàn),為后續(xù)業(yè)務(wù)規(guī)模擴(kuò)張及服務(wù)器資源合理規(guī)劃提供有力數(shù)據(jù)支撐,特此開(kāi)展本次壓測(cè)工作。
二、測(cè)試環(huán)境
(一)硬件環(huán)境
服務(wù)器配置:采用 1 臺(tái) 4 核 8G 服務(wù)器作為 MQTT 服務(wù)器,承載 FMQ MQTT Broker 運(yùn)行。輕量級(jí)服務(wù)器
壓測(cè)客戶端:部署 4 臺(tái) 4 核 8G 的輕量級(jí)服務(wù)器作為壓測(cè)客戶端,用于模擬海量 MQTT 客戶端向服務(wù)器發(fā)起請(qǐng)求。
(二)軟件環(huán)境
操作系統(tǒng):服務(wù)器及 4 臺(tái)壓測(cè)客戶端均選用 [操作系統(tǒng)名稱及版本]。該操作系統(tǒng)在系統(tǒng)資源調(diào)度、網(wǎng)絡(luò)協(xié)議棧優(yōu)化等方面表現(xiàn)出色,能夠充分發(fā)揮硬件性能。針對(duì)本次測(cè)試,對(duì)操作系統(tǒng)的內(nèi)核參數(shù)進(jìn)行了優(yōu)化,如調(diào)整文件描述符數(shù)量限制,增大網(wǎng)絡(luò)緩沖區(qū)大小等,以適配高并發(fā)的測(cè)試場(chǎng)景。
MQTT Broker:在服務(wù)器上運(yùn)行 EMQ X [版本號(hào)]。為提升性能,對(duì)其默認(rèn)配置進(jìn)行了精細(xì)優(yōu)化,包括調(diào)整線程池大小至 [具體數(shù)值],依據(jù)服務(wù)器硬件資源及測(cè)試負(fù)載預(yù)估,該數(shù)值可確保線程資源得到充分且合理利用;優(yōu)化緩沖區(qū)設(shè)置,將消息接收緩沖區(qū)大小擴(kuò)大至 [具體字節(jié)數(shù)],消息發(fā)送緩沖區(qū)大小調(diào)整為 [具體字節(jié)數(shù)],有效減少數(shù)據(jù)丟包與延遲。
壓測(cè)工具:在 4 臺(tái)壓測(cè)客戶端上均安裝 emqtt_bench壓測(cè)工具。該工具功能強(qiáng)大,可精確調(diào)控并發(fā)連接數(shù)、消息發(fā)送頻率及消息大小等關(guān)鍵參數(shù)。通過(guò)合理分配每臺(tái)壓測(cè)客戶端的測(cè)試任務(wù),如每臺(tái)分別負(fù)責(zé)模擬不同數(shù)量范圍的并發(fā)連接,可實(shí)現(xiàn)對(duì)服務(wù)器全方位、多層次的壓力測(cè)試。
三、測(cè)試方案
(一)測(cè)試指標(biāo)
**連接數(shù):**單節(jié)點(diǎn)MQTT服務(wù)器可以承載的客戶端數(shù)量
并發(fā)連接數(shù):用于衡量服務(wù)器同時(shí)處理客戶端連接的能力上限。
消息發(fā)送速率:反映單位時(shí)間內(nèi)客戶端向服務(wù)器發(fā)送消息的數(shù)量。
消息接收速率:體現(xiàn)單位時(shí)間內(nèi)服務(wù)器成功接收并處理的消息數(shù)量。
消息延遲:即從客戶端發(fā)送消息起,至服務(wù)器接收并處理完畢返回確認(rèn)消息所經(jīng)歷的時(shí)間間隔。
CPU 使用率:展示服務(wù)器在壓測(cè)期間 CPU 資源的占用比例。
內(nèi)存使用率:呈現(xiàn)服務(wù)器在壓測(cè)過(guò)程中內(nèi)存資源的消耗程度。
(二)測(cè)試場(chǎng)景
并發(fā)連接數(shù)遞增測(cè)試:測(cè)試從 100 個(gè)并發(fā)連接起步,以每次遞增 500 個(gè)連接的幅度,逐步提升至 5000 個(gè)并發(fā)連接。在每個(gè)并發(fā)連接數(shù)設(shè)定下,保持 10 分鐘的穩(wěn)定運(yùn)行時(shí)長(zhǎng),期間持續(xù)采集各項(xiàng)性能指標(biāo)數(shù)據(jù)。在這一過(guò)程中,4 臺(tái)壓測(cè)客戶端按照預(yù)先規(guī)劃的比例分擔(dān)并發(fā)連接任務(wù),例如第一臺(tái)負(fù)責(zé) 0 - 1200 個(gè)連接,第二臺(tái)負(fù)責(zé) 1201 - 2400 個(gè)連接,以此類推,確保負(fù)載均勻分布。
固定并發(fā)連接數(shù)下消息速率測(cè)試:依次設(shè)置并發(fā)連接數(shù)為 1000、2000、3000、4000 和 5000。在每個(gè)并發(fā)連接數(shù)條件下,從每秒 100 條消息的發(fā)送速率開(kāi)始,每次遞增 100 條消息,直至服務(wù)器出現(xiàn)明顯性能瓶頸,如消息延遲急劇上升、消息丟失等狀況。每個(gè)測(cè)試點(diǎn)同樣維持 10 分鐘穩(wěn)定運(yùn)行,采集性能數(shù)據(jù)。在該場(chǎng)景下,4 臺(tái)壓測(cè)客戶端協(xié)同工作,根據(jù)設(shè)定的消息發(fā)送速率,合理分配各自的消息發(fā)送量,保證測(cè)試的準(zhǔn)確性與可靠性。
(三)測(cè)試數(shù)據(jù)
純連接壓測(cè)
由于服務(wù)器資源有限,實(shí)際的連接數(shù)30w+以上
內(nèi)存使用率

jvm使用率

服務(wù)器情況

5w TPS壓測(cè)

服務(wù)器使用情況

10wTPS壓測(cè)

服務(wù)器使用情況

15wTPS壓測(cè)

服務(wù)器使用情況

運(yùn)行1小時(shí)后
運(yùn)行時(shí)間是1小時(shí)21分鐘

服務(wù)器使用情況

消息內(nèi)容:模擬真實(shí)業(yè)務(wù)消息,消息大小固定為 10字節(jié),以貼合實(shí)際應(yīng)用場(chǎng)景。
QoS 等級(jí):本次測(cè)試重點(diǎn)針對(duì) QoS 0 等級(jí)的消息展開(kāi),這兩個(gè)等級(jí)在常見(jiàn)業(yè)務(wù)場(chǎng)景中應(yīng)用廣泛,能夠有效檢驗(yàn)服務(wù)器在不同服務(wù)質(zhì)量要求下的性能表現(xiàn)。