當前位置: 妍妍網 > 碼農

【BeetleX重構】首次效能測試結果

2024-06-04碼農

BeetleX新版本進入了效能測試階段,設計目標除了最佳化設計結構、替換記憶體池方案希望初期效能和舊版本相當。不過從這次的測試結果來看還是相當理想的。在之前的測試中客戶端壓測使用了BeetleX舊版本編寫的壓測工具,壓測效果並不太理想,主要原因無法壓滿租用伺服器的CPU資源 。經過思考後決定采用新版本來寫壓測工具進行測試。

初始次壓測的邏輯比較簡單,從 Socket 接收數據經常框架事件分發到套用層,在套用層把數據讀取到一個臨時記憶體後再次寫入Socket發送給壓測端。

public classUserSession : SesionBase{publicUserSession() { }privatebyte[] _data = newbyte[1024 * 8];publicoverridevoidReceive(NetContext context, object message) {while (context.Reader.Length > 0) {var len = context.Reader.Read(_data, 0, _data.Length); context.Writer.Write(_data, 0, len); } context.Writer.Flush(); }publicoverridevoidConnected(NetContext context) {base.Connected(context); }}

在這裏並沒有直接返回會話接收的Byte[]連結串列,讀取出來並寫入更合一個網路通訊套用的基礎規範。

具體測試用壓測工具發起1000個連線,向伺服器發送封包,當接收到服務響應同樣長度的封包後再做二次請求,然後統計每秒產生的IO讀寫數據量並顯示,測試發送的內容分別是128,2K和16K字節。測試硬體環境是兩台A家雲的32核雲主機,網路介面卡是100Gb。以下是測試結果截

128字節

2K字節

16K字節

測試結果來看在發送128字節的測試中讀寫IO的總量基本已經達到了每秒270萬即每秒130萬的請求響應,而CPU基本處於滿負載狀態了。2K字節測試中CPU和IO量有下降出入頻寬和27Gb。當測試到16K字節的時候頻寬出入總量已經達到了43Gb,但cpu使用量不到50%顯然是頻寬受限了。

其實測試最有意義的還是第一項,看一下IO讀寫吞吐在相應CPU上的極限, 每秒 270萬的量說實話也是一個相當滿意的效果了。當然這只是一個元件最基礎的效能,後續會實作一個簡單的HTTP協定在協定分析的基礎上再進行效能測試。

BeetleX

開源跨平台通訊框架(支持TLS)

提供HTTP,Websocket,MQTT,Redis,RPC和服務閘道器開源元件

個人微信:henryfan128 QQ:28304340

關註公眾號

https://github.com/beetlex-io/