.net core百万设备连接服务和硬件需求测试
隨著物聯(lián)網(wǎng)的普及,服務(wù)應(yīng)用將面對大量物聯(lián)設(shè)備處理;早期.NET在通訊上的處理能力一直給人的印像并不怎樣,但net core經(jīng)歷過大量的優(yōu)化后在各個(gè)模塊的處理性能都有著比較出色的提升,針對網(wǎng)絡(luò)方向的處理模塊也有著顯著的提升。以下主要測試.net core在不同連接數(shù)據(jù)并發(fā)下的資源吏用情況,用于評估在不同數(shù)量連接上服務(wù)的處理能力和硬件配置的需求。
測試描述
分別以200,10萬,50萬,100萬不同連接數(shù)下接收數(shù)據(jù)包和響應(yīng)的資源使用情況,200連接情況下通過響應(yīng)請求方式進(jìn)行高吞吐壓測,后面則模擬設(shè)備每10秒發(fā)送一個(gè)數(shù)據(jù)包。發(fā)送數(shù)據(jù)如下:
000000123,0002123,00001234,20190430093022,01,020以上簡單地模擬一個(gè)設(shè)備信息,主要包括ID,座標(biāo),時(shí)間和狀態(tài)信息等,服務(wù)端接收后分解消息并返回。服務(wù)端處理代碼如下:
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();
}
}
測試環(huán)境
操作系統(tǒng)
運(yùn)行環(huán)境
硬件資源
測試工具
https://github.com/IKende/TCPBenchmarks
200連接
在小連接的情況其吞吐能力還是非常出色的,在這臺(tái)PC上達(dá)到30萬rps的情況還沒完全把CPU跑滿。
10萬連接
測試結(jié)果來看,平均并發(fā)在10000RPS;大部分請求都能在5ms內(nèi)響應(yīng)完成,而程序大部分工作時(shí)間CPU在10%以內(nèi),內(nèi)存占用大概700MB。
50萬連接
測試結(jié)果來看在50萬在線的時(shí)候,平均并發(fā)在100000RPS;大部分請求同樣在5ms內(nèi)響應(yīng)完成,程序大部分工作時(shí)間的CPU在20%以內(nèi),內(nèi)存占用大概在3.5G
100萬連接
100萬在線的時(shí)候,平均并發(fā)在100000RPS;大部分請求同樣在100ms內(nèi)響應(yīng)完成,程序大部分工作時(shí)間的CPU在40%以內(nèi),內(nèi)存占用大概在7-9G.不過這次測試的延時(shí)相對比較高,由于負(fù)載量的情況測試端也會(huì)引起延時(shí)的問題,所以導(dǎo)致整體延時(shí)比較高。
總結(jié)
以上測試的服務(wù)器的CPU比較舊,已經(jīng)是6年前的老產(chǎn)品,但在這個(gè)CPU的支持下運(yùn)行100萬連接處理也不算存在壓力。其主要原因還是整體的RPS并不高,當(dāng)在100萬連接的情況吞吐值在10萬RPS;這樣也可以說明在網(wǎng)絡(luò)服務(wù)中占CPU資源的是請求的響應(yīng)量而不是在線的連接數(shù),不過當(dāng)在線連接數(shù)比較多的情況還是需要占用大量的內(nèi)存;所以在制是定硬件規(guī)劃的時(shí)候可以針對在線連接數(shù)和請求量進(jìn)行一個(gè)結(jié)合規(guī)劃。
原文地址:https://www.cnblogs.com/smark/p/10846422.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.net core百万设备连接服务和硬件需求测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core 如何禁止.resx文
- 下一篇: .net core编写转发服务