.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();
}
}
測試環境
操作系統
運行環境
硬件資源
測試工具
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資源的是請求的響應量而不是在線的連接數,不過當在線連接數比較多的情況還是需要占用大量的內存;所以在制是定硬件規劃的時候可以針對在線連接數和請求量進行一個結合規劃。
原文地址:https://www.cnblogs.com/smark/p/10846422.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的.net core百万设备连接服务和硬件需求测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 如何禁止.resx文
- 下一篇: .net core编写转发服务