随着物联网的普及,服务应用将面对大量物联设备处理;早期.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资源的是请求的响应量而不是在线的连接数,不过当在线连接数比较多的情况还是需要占用大量的内存;所以在制是定硬件规划的时候可以针对在线连接数和请求量进行一个结合规划。

.net core百万设备连接服务和硬件需求测试的更多相关文章

  1. 使用BeetleX的TcpBenchmark工具进行百万设备模拟测试

    其实TCP测试的工具有很多,那BeetleX工具所提供的特点又是什么呢?如果你需数十万的请求或模拟上百万的设备连接,那这个工具相信可以满足你的需要!工具是基于BeetleX的基础功能扩展,支持多IP绑 ...

  2. 阿里云:面向5G时代的物联网无线连接服务

    在4月24日落幕的2019中国联通合作伙伴大会“5G+物联网(IoT)论坛”上,阿里云高级运营专家李茁出席圆桌对话,分享了5G时代物联网如何更好地推动行业完成生产.管理和商业模式的创新,阿里云又会以何 ...

  3. 网络编程Netty IoT百万长连接优化

    目录 IoT推送系统 IoT是什么 IoT推送系统的设计 心跳检测机制 简述心跳检测 心跳检测机制代码示例 百万长连接优化 连接优化代码示例 TCP连接四元组 配置优化 IoT推送系统 IoT是什么 ...

  4. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  5. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  6. Niagara解决设备连接应用的软件框架平台技术。

    Niagara 是Tridium公司所研发的设计用于解决设备连接应用的软件框架平台技术. Niagara是一种应用框架,或者说是软件框架,特别设计用于应对智能设备所带来的各种挑战,包括设备连接到企业级 ...

  7. 在 ASP.NET Core 中执行租户服务

    在 ASP.NET Core 中执行租户服务 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: http://gunna ...

  8. 170122、Netty 长连接服务

    推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服务.和 iOS 不同,Android 生态中没有统一的推送服务.Google 虽然有 Google Cloud Messaging ...

  9. (转)远程SSH连接服务与基本排错

    远程SSH连接服务与基本排错 原文:https://www.cnblogs.com/chensiqiqi/p/6224474.html#top 1.1 为什么要远程连接Linux系统 在实际的工作场景 ...

随机推荐

  1. shell脚本简单例子

    eg: Expect: 1.用环境变量RANDOM随机生成一个100以内的随机数 2.read读取当前输入 3.当前输入对比随机生成的数 4.当两个数相等时跳出苏循环,并计数(比较n次结果才相等) # ...

  2. 每个开发人员都应该知道的11个Linux命令

    本文主要挑选出读者有必要首先学习的 11 个 Linux 命令,如果不熟悉的读者可以在虚拟机或云服务器上实操下,对于开发人员来说,能熟练掌握 Linux 做一些基本的操作是必要的! 事不宜迟,这里有 ...

  3. CF547E Milk and Friends(AC自动机的fail指针上建主席树 或 广义后缀自动机的parent线段树合并)

    What-The-Fatherland is a strange country! All phone numbers there are strings consisting of lowercas ...

  4. Java并发编程系列-(2) 线程的并发工具类

    2.线程的并发工具类 2.1 Fork-Join JDK 7中引入了fork-join框架,专门来解决计算密集型的任务.可以将一个大任务,拆分成若干个小任务,如下图所示: Fork-Join框架利用了 ...

  5. Linux IO多路复用之epoll网络编程

    前言 本章节是用基本的Linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下: 客户端从标准输入读入一行,发送到服务端 服务端从网络读取一 ...

  6. BGA256芯片植球全过程体验(原创)

    今天工具到位,迫不亟待,需要对手上的BGA256的FPGA芯片进行植球, 该芯片买来的时候是有球的,只是在焊接后,由于电路板故障或焊接问题,需要拆下来芯片,导致球损失,需要重新植球. 一般植球都是将所 ...

  7. processing-python-泡泡龙

    挂一个无耻搬运工:码农教程. 真的打心底里瞧不起为了蹭热度全网照抄代码的某些人. 再次此声明:代码不是python语言,求某些搬运工不要到处搬运害人. def setup(): size(600,60 ...

  8. postman高级应用

    目录 提取接口返回值 设置动态参数 流程控制 调试 定义公共函数 外部数据文件 提取接口返回值 1.获取响应的header值 var Content-Type=postman.getResponseH ...

  9. 机会来了!5G时代带来新闻传播行业的变革!

    5G时代到来!新闻传播行业大变革! 1.作为一名体育生进入的新闻传播学院,传统的新闻媒体能力已不再具有优势,意味着我有翻身的机会了! 从一开始进入大学,由于高中的知识储备不如其他人,尤其是英语能力方面 ...

  10. 【ES6】数组的扩展——扩展运算符

    1.扩展运算符[三个点(...)将一个数组转为用逗号分隔的参数序列] 作用:用于函数调用 function add(x, y) { return x + y; } const numbers = [2 ...