Socket Tcp高密集信息广播转发强度测试
在有些场中存在着大量的消息广播转发,为了了解.net socket tcp在这方面的性能表现,所以做了一个比较极端信息广播转发强度测试.测试场景是以400个连接信息相互广播为测试用例就是当其中一个连接发送消息到服务端就会转发到其他连接上,测试情况分别是每个连接每秒广播2,5和10次,其服务器每秒的信息转发量分别320000,800000和1600000.
测试的硬件分别是一台win2008服务器,1台WIN2003和两个vm win2003.测试交互的消息如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Po { public int ID; public short X; public short Y; public short Type; public void Load(BufferReader { ID X Y Type } public void Save(BufferWriter { writer.Write(ID); writer.Write(X); writer.Write(Y); writer.Write(Type); } } |
以上消息写入流的大小是18个byte,由于在之前的测试中使用的是100mb交换,所以大概跑到50w左右的消息量基本就跑满了,最近刚换上了1000mb交换所以重新进一个密集交互测试.
每秒发两次的结果

每秒发5次的结果

每秒发10次的结果

总结
从最终的测试结果来看即使每秒转发到到1600000消息,cpu和内在的使用率都还是很低的,从测试程序的日志输出来看每秒大概使用了27000个IO来处理这1百多W的消息转发,简单地算一下大概每个IO处理了50多个消息.由于IO资源的缺少在面对这情况下也必须这样做,即使千兆的交换机其pps也只通达到1488000因此到系统软件层面就更不用谈了.虽然使用了合并处理转发数据,但延时控制还是很理想即使服务器的转发量达到每秒1600000消息,但每个消息到达client还是可以控制到20ms内.
从服务器的资源来看其实还可以做更极端的压力测试,可是client不给力因为整个测试过程包括协议分析,对象写入流和流解释成对象,由于服务端一个对象分发到N个连接也只是序列化一次,所以损耗并不高.但对于client就不一样,每次接收一个消息都需反序列成对象.对于配置不高的client来说每秒要处理接近百W的消息分析和反序列完全应付不过来,如果以后有更好的机器会再详细测一次.
相信看完这个测试的朋友应用对.net socket有更深入的了解,同样.net socket在iocp的支持下其性能也是很出色的.
Socket Tcp高密集信息广播转发强度测试的更多相关文章
- .NET Socket TCP 50W在线连接交互测试
在平常的交流中经常有人问.net socket能支持多少在线?和C++或linux下比起来应该差很远吧?其实产生这样问题的主要原因是.net很少人去做这方面的测试,而在linux下则经常听到什么100 ...
- ActionScript简单实现Socket Tcp应用协议分析器
转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...
- 27.Socket,TCP,UDP,HTTP基本通信原理
Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...
- 基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计与实现
设计概述 服务端通信组件的设计是一项非常严谨的工作,其中性能.伸缩性和稳定性是必须考虑的硬性质量指标,若要把组件设计为通用组件提供给多种已知或未知的上层应用使用,则设计的难度更会大大增加,通用性.可用 ...
- linux tcp 高并发最大连接数
Linux下高并发socket最大连接数所受的限制问题 1.修改用户进程可打开文件数限制 在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统 ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室
原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- 基于.NET Socket Tcp的发布-订阅框架
基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...
随机推荐
- 亮相CCIG2024,合合信息文档解析技术破解大模型语料“饥荒”难题
近日,2024中国图象图形大会在古都西安盛大开幕.本届大会由中国图象图形学学会主办,空军军医大学.西安交通大学.西北工业大学承办,通过二十多场论坛.百余项成果,集中展示了生成式人工智能.大模型 ...
- ASP.NET Core C# 反射 & 表达式树 (第二篇)
前言 上一篇讲到了各种反射的操作方式, 这一篇主要说说如何找到类型. Type Information 在找类型的时候, 除了依据简单的 string 以外, 还会用到很多类型属性来做判断. 比如它是 ...
- 使用 Flutter 加速应用开发
作者 / Larry McKenzie 本文由 eBay 技术负责人 Larry Mckenzie 和 Corey Sprague 撰写.您可以收听他们在 Google Apps, Games &am ...
- 以太坊Rollup方案之 arbitrum(2)
上一期简单介绍了一下rollup的一些基本内容以及aritrun交易的执行流程,这一期将介绍一下aritrum的核心技术 -- 交互式单步证明 这一期主要涉及到的是arbitrum的验证节点 arbi ...
- 2.3.1 ChatGLM3简介与安装
安装:pip install modelscope pip install torch==2.0.1 torchaudio torchvision -i https://pypi.tuna.tsing ...
- 服务器Linux的一些常用命令,收藏备用!
在Linux服务器的管理和维护过程中,掌握一些常用的命令是非常必要的.这些命令不仅可以帮助你更好地了解和控制系统,还能提高工作效率,减少错误发生的概率.本文将详细介绍一些在Linux服务器上常用的命令 ...
- 将nii文件CT图像更改窗宽窗位之后保存成nii文件
因为项目需要把CT图像中骨头更加明确的显示出来,且还需要保存nii文件,所以查了一些资料,在这里做一下笔记,方便以后使用.代码如下: import nibabel as nib import nump ...
- px 、em、rem 的选取依据
1. px 像素(Pixel).绝对单位.像素px是相对于显示器屏幕分辨率而言的,是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果 px要换算成物理长度,需要 指定精度 DPI. 2. em ...
- 010 Python 重中之重的变量
#!/usr/bin/env python # -*- coding:utf-8 -*- # Datatime:2022/7/16 20:32 # Filename:010 Python 重中之重的变 ...
- Java 如何确保 JS 不被缓存
大家好,我是 V 哥.今天咱们来聊一聊 Java 后端确保 JavaScript 不被缓存的问题,先来了解一下为什么需要这样做,通常源于以下几种场景或问题: 1. 先来看几个问题 1. 文件更新后无法 ...