歡迎光臨
每天分享高質量文章

.net core百萬設備連接服務和硬體需求測試

隨著物聯網的普及,服務應用將面對大量物聯設備處理;早期.NET在通訊上的處理能力一直給人的印像並不怎樣,但net core經歷過大量的優化後在各個模塊的處理性能都有著比較出色的提升,針對網絡方向的處理模塊也有著顯著的提升。以下主要測試.net core在不同連接資料併發下的資源吏用情況,用於評估在不同數量連接上服務的處理能力和硬體配置的需求。

測試描述

分別以200,10萬,50萬,100萬不同連接數下接收資料包和響應的資源使用情況,200連接情況下通過響應請求方式進行高吞吐壓測,後面則模擬設備每10秒發送一個資料包。發送資料如下:

000000123,0002123,00001234,20190430093022,01,020

以上簡單地模擬一個設備信息,主要包括ID,座標,時間和狀態信息等,服務端接收後分解訊息並傳回。服務端處理代碼如下:

        public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
        {
            base.SessionReceive(server, e);
            var stream = e.Stream.ToPipeStream();
            while (stream.TryReadLine(out string line))
            {
                string[] properties = line.Split(',');
                stream.WriteLine(line);
                e.Stream.Flush();
            }
        }

測試環境

  • 操作系統
window 2008 server
  • 運行環境
dotnet core 2.1
  • 硬體資源
CPU E3-1230V2 16G記憶體 10Bb網絡
  • 測試工具
Tcp TCPBenchmarks
https://github.com/IKende/TCPBenchmarks

200連接

在小連接的情況其吞吐能力還是非常出色的,在這台PC上達到30萬rps的情況還沒完全把CPU跑滿。

10萬連接

測試結果來看,平均併發在10000RPS;大部分請求都能在5ms內響應完成,而程式大部分工作時間CPU在10%以內,記憶體占用大概700MB。

50萬連接

測試結果來看在50萬在線的時候,平均併發在100000RPS;大部分請求同樣在5ms內響應完成,程式大部分工作時間的CPU在20%以內,記憶體占用大概在3.5G

100萬連接

100萬在線的時候,平均併發在100000RPS;大部分請求同樣在100ms內響應完成,程式大部分工作時間的CPU在40%以內,記憶體占用大概在7-9G.不過這次測試的延時相對比較高,由於負載量的情況測試端也會引起延時的問題,所以導致整體延時比較高。

總結

以上測試的服務器的CPU比較舊,已經是6年前的老產品,但在這個CPU的支持下運行100萬連接處理也不算存在壓力。其主要原因還是整體的RPS並不高,當在100萬連接的情況吞吐值在10萬RPS;這樣也可以說明在網絡服務中占CPU資源的是請求的響應量而不是在線的連接數,不過當在線連接數比較多的情況還是需要占用大量的記憶體;所以在制是定硬體規劃的時候可以針對在線連接數和請求量進行一個結合規劃。

已同步到看一看
赞(0)

分享創造快樂