軟件擴展能力是軟件架構設計中的一個關鍵要素,具有良好擴展能力的軟件能夠充分利用新增的硬件資源。當軟件性能與硬件增加保持同步比例增長時,我們稱這種現象為軟件具有線性擴展能力。要實現這種線性擴展并不簡單,它要求軟件架構精心設計,能夠最大化硬件性能的利用,同時減少內部資源消耗。這需要對現有架構進行深入的優化和調整。
測試目的
驗證在帶寬、IO 及內存不是瓶頸,僅 CPU 是瓶頸的情況下,寫入速度應與 CPU 核數成正比。
測試方法
測試系統:使用 TDengine 官網發布的 docker 鏡像,TDengine 版本為 V3.3.0.0
測試工具:taosBenchmark
表結構:TDengine 官網智能電表結構
增加 CPU 核數方法:docker 綁定固定數量 CPU 技術
兩階段配置方法:
1 ~ 4 核 VGROUP 為 4 ,寫入線程數為 4
5 ~ 12 核 VGROUP 為 12 ,寫入線程數為 12
使用兩階段配置,讓 CPU 始終保持在瓶頸狀態
測試參數
數據庫:1 個
超級表:1 個
子表數:100 個
每子表行數:100W
總數據量:1 億
測試結果
磁盤為 SSD,寫入最高可達 :350M/秒,IO 非常富余
帶寬:客戶端服務器同一臺機器,帶寬可認為無限制
數據解讀
-
在 4 核時 CPU 使用率降至 88%,若再增加 CPU 可能 CPU 不會再成為瓶頸,所以升級配置至 12 個 VGROUPS、12 寫入線程,讓 CPU 始終保持在瓶頸狀態下
-
每增加一個 CPU,寫入性能線性提升約 50W 左右,符合線程增長預期
-
磁盤 IO 基本與寫入速度增長保持一致
測試結論:?與預期一致
測試目的
驗證在CPU、帶寬及內存不是瓶頸,僅 IO 是瓶頸情況下,寫入速度應與增加的磁盤個數成正比。
測試方法
測試系統:Linux Ubuntu 20.4 操作系統
硬件配置:CPU 24 核, 64 GB 內存,掛三塊普通 5400 轉低速機械盤(選擇性能普通的硬盤,有利于很快打滿 IO,達到 IO 成為瓶頸的條件 )
TDengine:版本 V3.3.0.0
測試工具:taosBenchmark
表結構:?
(每行長度 32618 字節,使用大寬行,更能把 IO 打滿)
增加磁盤方法:使用同級掛載多塊磁盤技術
測試參數
數據庫:1 個 VGROUP 16
超級表:1 個
子表數:100 個
每子表行數:1W
總數據量:100W
taosBenchmark?:
寫入線程數 = 16 個
寫入方式 = stmt vgroup 綁定線程快速寫入方法
測試結果
-
CPU: 24 核 CPU ,大部分都為空閑,CPU 非常富余
-
帶寬:客戶端服務器同一臺機器,帶寬可認為無限制
-
Commit 線程數是數據落盤的線程數,直接操作 IO?
-
磁盤掛載到 3 塊后,需求加大 Commit 線程數,才能打滿 IO
數據解讀
從數據上可看出,每增加一塊磁盤,寫入性能也會成比例增長,新增磁盤 IO 被充分使用。
測試結論:?與預期一致
通過對 TDengine 服務器的 CPU 和磁盤資源進行擴展實驗,我們驗證了其對硬件資源的利用能力。實驗結果表明,TDengine 展現出了顯著的線性擴展能力,這證明了其具備優秀的架構設計和先進的設計理念。TDengine 能夠有效地利用增加的硬件資源,這不僅提升了性能,也優化了資源的整體使用效率。這種能力是 TDengine 高效處理大規模數據需求的關鍵因素。
關于 TDengine
TDengine?是一款專為物聯網、工業互聯網等場景設計并優化的大數據平臺,其核心模塊是高性能、集群開源、云原生、極簡的時序數據庫。它能安全高效地將大量設備每天產生的高達 TB 甚至 PB 級的數據進行匯聚、存儲、分析和分發,并提供 AI 智能體對數據進行預測與異常檢測,提供實時的商業洞察。