.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資源的是請求的響應量而不是在線的連接數,不過當在線連接數比較多的情況還是需要占用大量的內存;所以在制是定硬件規划的時候可以針對在線連接數和請求量進行一個結合規划。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM