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

jvm使用率

服務器情況

5w TPS壓測

服務器使用情況

10wTPS壓測

服務器使用情況

15wTPS壓測

服務器使用情況

運行1小時后
運行時間是1小時21分鐘

服務器使用情況

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